Hoppa till huvudinnehÄll

🌿 Arbetsflöde

Denna sida beskriver vÄra konventioner för versionshantering, commits och release-processen.

Versionshantering​

Vi anvÀnder en enkel branchstrategi med en main-branch som alltid ska vara i ett deploybart skick. Utveckling sker i feature- eller bugfix-brancher som sedan mergas in i main. Vi anvÀnder inte develop eller andra liknande brancher för att hÄlla det enkelt och för att passa ett arbetssÀtt med kontinuerlig integration och leverans (CI/CD).


📝 Conventional commits​

Commits görs enligt conventional commits. AnvÀnd engelska, imperativ form, definiera type feat|docs|fix|refactor|test|chore|ops... för att avgöra vilken versionsÀndring du vill göra och scope (project, component) som rubrik för changelog.

Viktigt: Scope börjar alltid med ett av Nx-projekten (components, theme, docs, etc.) för att versionshanteringen ska fungera korrekt. Du kan lÀgga till flera scopes med kommatecken, t.ex. feat(components,button): ...

Exempel​

feat(components, button): add new button variant # Minor bump för components
fix(theme): fix button hover color # Patch för theme
docs: update contribution guide # Ingen bump

# Med body för mer kontext
fix(theme): prevent red color on button hover

Introduce new css variable to automatically
select style based on input type

Types och versionsĂ€ndringar​

TypeBeskrivningVersion
featNy funktionalitetMinor
fixBuggfixPatch
docsDokumentationIngen
refactorKodrefaktoreringIngen
testTesterIngen
choreUnderhÄllIngen

Tabellen gÀller paket som har nÄtt 1.0. För paket pÄ version 0.x flyttas versionsÀndringarna ned ett steg, se Paket pÄ version 0.x.

Breaking changes och major-versioner​

För att trigga en major-version, lÀgg till BREAKING CHANGE: i commit-meddelandets body:

feat(components, button): remove deprecated size prop

BREAKING CHANGE: The size prop has been removed. Use variant instead.

🚀 Release​

Release sker automatiskt via CI/CD nÀr Àndringar mergas till main-branchen.

Hur det fungerar​

  1. Automatiska versioner: NÀr en pull request mergas till main analyserar Nx Release alla commits sedan senaste release och rÀknar fram rÀtt version baserat pÄ conventional commits.

  2. Publicering: Om nÄgon package fÄr en ny version publiceras den automatiskt till npm.

  3. Changelog och taggar: Changelog uppdateras automatiskt och nya git-taggar skapas enligt formatet nx-project@version.

  4. Dokumentation: Dokumentationswebben byggs och publiceras automatiskt med de senaste Àndringarna.

Vad du behöver göra​

  • Följ conventional commits: Se till att dina commits följer conventional commits-standarden, eftersom det avgör vilken versionsĂ€ndring som sker (major, minor, patch).
  • Skapa en PR: Alla kan skapa pull requests, men Midas core-team ansvarar för granskning och merge.
  • InvĂ€nta merge: NĂ€r din PR godkĂ€nns och mergas till main sker resten automatiskt.

Paket pĂ„ version 0.x​

SÄ lÀnge ett paket har version 0.x följer Nx Release SemVer-konventionen för instabila versioner, dÀr varje versionsÀndring flyttas ned ett steg.

Det betyder att ett paket aldrig nÄr 1.0 automatiskt, inte ens med en breaking change. Steget till 1.0 Àr ett medvetet beslut om att paketets API Àr stabilt och görs manuellt.

Ta ett paket till 1.0​

  1. Se till att allt som ska ingÄ i 1.0 Àr mergat till main och att den automatiska releasen för den senaste merge-committen Àr klar.

  2. HÀmta senaste main och kontrollera att arbetskatalogen Àr ren med git status.

  3. Provkör releasen och kontrollera att den nya versionen blir 1.0.0:

    npx nx release 1.0.0 --projects=<projekt> --skip-publish --dry-run
  4. Kör releasen pÄ riktigt:

    npx nx release 1.0.0 --projects=<projekt> --skip-publish

    Kommandot uppdaterar package.json och changelog, skapar committen chore(release): publish och taggen <projekt>@v1.0.0, pushar dem till main och skapar en GitHub-release. För GitHub-releasen behöver Nx en token, antingen via miljövariabeln GITHUB_TOKEN/GH_TOKEN eller genom att du Àr inloggad med GitHub CLI (gh auth login). Annars öppnar Nx en förifylld release-sida i webblÀsaren.

  5. Committen chore(release): publish startar arbetsflödet Publish to NPM, som publicerar paketet till npm. AnvÀnd dÀrför alltid --skip-publish lokalt. Det vanliga release-flödet hoppar över chore(release)-committar, sÄ versionen bumpas inte en gÄng till.

Efter 1.0 gÀller de vanliga reglerna i tabellen ovan. Om 1.0 innehÄller breaking changes, beskriv dem och hur man migrerar i dokumentationen för paketet.