đż 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â
| Type | Beskrivning | Version |
|---|---|---|
feat | Ny funktionalitet | Minor |
fix | Buggfix | Patch |
docs | Dokumentation | Ingen |
refactor | Kodrefaktorering | Ingen |
test | Tester | Ingen |
chore | UnderhÄll | Ingen |
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â
-
Automatiska versioner: NĂ€r en pull request mergas till
mainanalyserar Nx Release alla commits sedan senaste release och rÀknar fram rÀtt version baserat pÄ conventional commits. -
Publicering: Om nÄgon package fÄr en ny version publiceras den automatiskt till npm.
-
Changelog och taggar: Changelog uppdateras automatiskt och nya git-taggar skapas enligt formatet
nx-project@version. -
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
mainsker 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â
-
Se till att allt som ska ingÄ i 1.0 Àr mergat till
mainoch att den automatiska releasen för den senaste merge-committen Àr klar. -
HĂ€mta senaste
mainoch kontrollera att arbetskatalogen Àr ren medgit status. -
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 -
Kör releasen pÄ riktigt:
npx nx release 1.0.0 --projects=<projekt> --skip-publishKommandot uppdaterar
package.jsonoch changelog, skapar committenchore(release): publishoch taggen<projekt>@v1.0.0, pushar dem tillmainoch skapar en GitHub-release. För GitHub-releasen behöver Nx en token, antingen via miljövariabelnGITHUB_TOKEN/GH_TOKENeller genom att du Àr inloggad med GitHub CLI (gh auth login). Annars öppnar Nx en förifylld release-sida i webblÀsaren. -
Committen
chore(release): publishstartar arbetsflödet Publish to NPM, som publicerar paketet till npm. AnvÀnd dÀrför alltid--skip-publishlokalt. Det vanliga release-flödet hoppar överchore(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.