Publisere nye versjoner av koden

Komponentbiblioteket og tokens-pakka er tilgjengelige gjennom npm-pakker. Her er en guide på hva du trenger å gjøre ved endringer i pakkene.

Pakkeversjonene følger semantisk versjonering. En versjonsendring indikerer om en endring i pakken krever omskriving av kode eller ikke fra konsumentene.

Når du endrer en pakke

Når du har gjort en endring som påvirker konsumere av pakken, må du oppdatere en versjon. Endringer som ikke påvirker pakken, som tester, dokumentasjon, enkel styling-fiks og endringer i CI/CD trenger ikke en ny versjon.

Vi bruker changeset/cli for å hjelpe oss med versjonering.

Etter du har gjort kodeendringene, kan du kjøre følgende script i rotmappen av prosjektet. Da vil du få spørsmål om hvilke pakker du har gjort endringer i, hvilken versjon endringene indikerer og å gi en oppsummering.

npx changeset

Versjoneringstypene major, minor og patch

Her er en enkel huskeliste for de ulike typene major, minor og patch:

  • Major: Endring som krever endring fra konsumentene. Som for eksempel endring eller fjerning av et komponent eller prop.
  • Minor: Endring som ikke krever noe fra konsumentene. For eksempel å legge til et komponent eller prop.
  • Patch: Mindre endring som ikke legger til funksjonalitet. Som å fikse en bug eller refaktorering.

Oppsummering av endringer

Teksten du skriver inn i oppsummeringen, blir en del av endringsloggen. Oppsummeringene er på engelsk og følger conventional commits.

Et eksempel er feat(button): add size prop. Du beskriver altså hvilken type endringen er (feat), hvilken komponent det gjelder (button), og hva endringen er for brukerne (add size prop).

Om det er en breaking change, bør du også beskrive hvordan brukerne migrerer koden sin. Som for eksempel BREAKING CHANGE(heading): rename size to fontSize.

Publisering

Vi bruker en GitHub action for changesets, så flere versjoner kan samles og publiseres samtidig.

Dette fungerer ved at etter din pull requesten er merget, blir det automatisk opprettet en pull request kalt "Version Packages". Den akkumulerer changesets fra andre commits, frem til det er klart til å release ny versjon. Når noen merger "Version Packages", publiseres nye versjoner til npm.

Kommunisere breaking changes

Før du lager en breaking change, se etter å først deprecate gammel kode. For eksempel, la fetchDataGammel og fetchDataMedNyttNavn leve side om side, frem til gammel funksjon fjernes. Du kan bruke jsDoc for å markere en funksjon som deprecated.

/**
 * andre docs her
 *
 * @deprecated bruk fetchDataMedNyttNavn istedenfor
 */
function fetchDataGammel(props) {
  // …
}

Gi også en migrasjonsguide for hvordan ny funksjon kan brukes, og post en melding på Slack om breaking change.