Changesets
pubm nutzt Changesets als dauerhafte Aufzeichnung dafür, was als Nächstes veröffentlicht werden soll. Statt Versionen aus Commit-Meldungen oder Branch-Namen abzuleiten, liest es versionierte Dateien aus .pubm/changesets/ und wandelt sie in Versionssprünge und Changelog-Einträge um.
Warum Changesets wichtig sind
Abschnitt betitelt „Warum Changesets wichtig sind“- ein prüfbarer Release-Plan in jedem Pull Request
- eine deterministische Berechnung von Versionsspruengen über mehrere Pakete hinweg
- Changelog-Inhalte, die vor dem Release-Tag geschrieben werden, nicht erst danach
Speicherort
Abschnitt betitelt „Speicherort“Ausstehende Changesets liegen hier:
.pubm/changesets/Initialisiere dieses Verzeichnis mit dem interaktiven Setup-Wizard:
pubm initWährend des Setups fragt pubm init, ob der Changesets-Workflow aktiviert werden soll. Bei Ja erstellt es das Verzeichnis .pubm/changesets/, erzeugt .github/workflows/changeset-check.yml für die PR-Durchsetzung und aktualisiert .gitignore, damit Changeset-Dateien nachverfolgt und andere .pubm/-Inhalte ignoriert werden.
Ein Changeset anlegen
Abschnitt betitelt „Ein Changeset anlegen“pubm changesets addIn einem Monorepo fragt pubm auch ab, welche Pakete betroffen sind und welchen Versionssprung jedes Paket bekommen soll.
Für die nicht-interaktive Nutzung:
pubm changesets add \ --packages @acme/core,@acme/react \ --bump minor \ --message "Add token-based auth to the public client."Inhalt einer Changeset-Datei
Abschnitt betitelt „Inhalt einer Changeset-Datei“---"@acme/core": minor"@acme/react": patch---
Add token-based auth to the public client.Die Metadaten steuern die Versionsberechnung. Der Inhalt wird zur Changelog-Zusammenfassung.
Ausstehende Änderungen prüfen
Abschnitt betitelt „Ausstehende Änderungen prüfen“Bevor du Changesets verarbeitest, solltest du sie prüfen:
pubm changesets statuspubm changesets status --verbosepubm changesets version --dry-runWie Changesets verarbeitet werden
Abschnitt betitelt „Wie Changesets verarbeitet werden“Wenn du die normale Release-Pipeline mit pubm startest, werden ausstehende Changesets während des Versionsschritts verarbeitet.
Der Ablauf sieht so aus:
- liest ausstehende
.pubm/changesets/*.md-Dateien - berechnet die resultierenden Paketversionen
- aktualisiert Manifest-Versionen
- erzeugt Changelog-Eintraege
- löscht verbrauchte Changeset-Dateien
- erstellt den Release-Commit und die Tags
Wenn du nur den Versionsschritt vorab ausführen möchtest, kannst du weiterhin dies laufen lassen:
pubm changesets versionDer Befehl ist für redaktionelle oder kontrollierte Workflows nützlich, aber nicht nötig vor pubm oder pubm --mode ci --phase publish.
Changelog erzeugen
Abschnitt betitelt „Changelog erzeugen“Wenn du Changelog-Text erzeugen willst, ohne die Versionen schon zu verbrauchen:
pubm changesets changelog --dry-runpubm changesets changelog --version 1.8.0Fallback auf Conventional Commits
Abschnitt betitelt „Fallback auf Conventional Commits“Wenn versionSources "all" ist (der Standard), fällt pubm changesets version automatisch auf Conventional Commits zurück, wenn ein Paket keine ausstehenden Changeset-Dateien hat. Dadurch können Teams Changesets schrittweise einführen: Pakete mit Changesets verwenden diese; Pakete ohne Changesets greifen auf die Commit-Historie zurück.
Standard-Zuordnung von Commit-Typen
Abschnitt betitelt „Standard-Zuordnung von Commit-Typen“| Commit-Typ | Bump |
|---|---|
feat | minor |
fix | patch |
perf | patch |
Ein BREAKING CHANGE-Footer oder ein !-Suffix (z. B. feat!:) erzeugt immer einen major-Bump.
Benutzerdefinierte Zuordnungen konfigurieren
Abschnitt betitelt „Benutzerdefinierte Zuordnungen konfigurieren“Überschreibe die Standard-Zuordnung in pubm.config.ts:
export default defineConfig({ versionSources: "all", conventionalCommits: { types: { feat: "minor", fix: "patch", perf: "patch", docs: "patch", }, },});Setze versionSources: "commits", um nur Conventional Commits zu verwenden und Changeset-Dateien vollständig zu ignorieren. Setze versionSources: "changesets", um den Fallback zu deaktivieren und nur Changeset-Dateien zu verwenden.
Migration von .changeset/
Abschnitt betitelt „Migration von .changeset/“pubm changesets migrateDamit werden ausstehende Dateien von .changeset/ nach .pubm/ migriert.