Advanced

Changeset-Versionsverwaltung mit Claude Code implementieren

Erfahren Sie, wie Sie Changeset-basierte Versionsverwaltung und automatische CHANGELOG-Generierung mit Claude Code umsetzen. Einschließlich Monorepo-Unterstützung, CI-Integration und Release-Flow-Design.

Systematische Versionsverwaltung mit Changeset

Changeset ist ein Tool zur Automatisierung der Paketversionierung und CHANGELOG-Generierung. Es ist besonders in Monorepo-Umgebungen leistungsstark und ermöglicht einen konsistenten Release-Flow unter Berücksichtigung der Abhängigkeiten zwischen Paketen. Claude Code unterstützt zuverlässig von der Konfiguration bis zur CI-Integration.

Ersteinrichtung

Beauftragen Sie Claude Code mit dem Setup.

> Führe Changeset in das Monorepo-Projekt ein.
> Einschließlich automatischem Release über GitHub Actions und CHANGELOG-Generierung.
# Installation
npm install -D @changesets/cli @changesets/changelog-github

# Initialisierung
npx changeset init
// .changeset/config.json
{
  "$schema": "https://unpkg.com/@changesets/[email protected]/schema.json",
  "changelog": [
    "@changesets/changelog-github",
    { "repo": "your-org/your-repo" }
  ],
  "commit": false,
  "fixed": [],
  "linked": [],
  "access": "public",
  "baseBranch": "main",
  "updateInternalDependencies": "patch",
  "ignore": [],
  "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
    "onlyUpdatePeerDependentsWhenOutOfRange": true
  }
}

Changeset erstellen

So erstellen Sie eine Changeset-Datei, die die Änderungen beschreibt.

# Changeset interaktiv erstellen
npx changeset
<!-- .changeset/happy-dogs-fly.md -->
---
"@myapp/ui": minor
"@myapp/utils": patch
---

Variante „outline" zur Button-Komponente hinzugefügt.
Typdefinitionen der Utility-Funktionen verbessert.

Beispiel-Prompt für die Changeset-Erstellung mit Claude Code.

> Erstelle ein Changeset für die aktuellen Änderungen.
> Minor-Version-Änderung für @myapp/ui, mit Beschreibung.

npm Scripts konfigurieren

// package.json
{
  "scripts": {
    "changeset": "changeset",
    "changeset:status": "changeset status",
    "version": "changeset version",
    "release": "changeset publish",
    "prerelease": "npm run build"
  }
}

Automatisches Release mit GitHub Actions

Ein Workflow, der beim Merge eines PR automatisch einen Versionsupdate-PR erstellt und nach dem Merge auf npm veröffentlicht.

# .github/workflows/release.yml
name: Release

on:
  push:
    branches: [main]

concurrency: ${{ github.workflow }}-${{ github.ref }}

permissions:
  contents: write
  pull-requests: write
  packages: write

jobs:
  release:
    name: Release
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          registry-url: "https://registry.npmjs.org"

      - run: npm ci
      - run: npm run build

      - name: Create Release Pull Request or Publish
        id: changesets
        uses: changesets/action@v1
        with:
          version: npm run version
          publish: npm run release
          title: "chore: Versionsupdate"
          commit: "chore: Versionsupdate"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

Erweiterte Konfiguration für Monorepos

Konfigurationsmuster zur Verwaltung der Verknüpfungen zwischen Paketen.

// .changeset/config.json
{
  "changelog": [
    "@changesets/changelog-github",
    { "repo": "your-org/your-repo" }
  ],
  "commit": false,
  "fixed": [
    ["@myapp/core", "@myapp/cli"]
  ],
  "linked": [
    ["@myapp/ui", "@myapp/theme"]
  ],
  "access": "public",
  "baseBranch": "main",
  "updateInternalDependencies": "patch"
}
  • fixed - Paketgruppe, die immer die gleiche Version hat
  • linked - Paketgruppe, deren Versionen gekoppelt ansteigen

Pre-Release-Verwaltung

Release-Flow für Beta- und RC-Versionen.

# Pre-Release-Modus aktivieren
npx changeset pre enter beta

# Changeset hinzufügen
npx changeset

# Pre-Release-Version anwenden
npx changeset version
# => 1.0.0 -> 1.1.0-beta.0

# Veröffentlichen
npx changeset publish

# Pre-Release-Modus beenden
npx changeset pre exit

Changeset-Validierung

Ein Workflow, der in der CI prüft, ob ein PR ein Changeset enthält.

# .github/workflows/changeset-check.yml
name: Changeset Check

on:
  pull_request:
    branches: [main]

jobs:
  changeset-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - name: Check for changeset
        run: npx changeset status --since=origin/main

Benutzerdefiniertes CHANGELOG-Format

Muster zur Anpassung der CHANGELOG-Ausgabe.

// .changeset/changelog-config.ts
import type { ChangelogFunctions } from "@changesets/types";

const changelogFunctions: ChangelogFunctions = {
  getDependencyReleaseLine: async () => "",
  getReleaseLine: async (changeset, type) => {
    const [firstLine, ...rest] = changeset.summary
      .split("\n")
      .map((l) => l.trimEnd());

    const date = new Date().toISOString().slice(0, 10);

    let returnVal = `- ${firstLine}`;

    if (rest.length > 0) {
      returnVal += `\n${rest.map((l) => `  ${l}`).join("\n")}`;
    }

    return returnVal;
  },
};

export default changelogFunctions;

Zusammenfassung

Changeset ist ein leistungsstarkes Tool zur Automatisierung systematischer Versionsverwaltung und Release-Flows. Mit Claude Code können Sie effizient von der Erstkonfiguration über CI-Integration bis zur Monorepo-Unterstützung alles aufbauen.

Zur Monorepo-Verwaltung siehe den Monorepo-Verwaltungsleitfaden, zum CI/CD-Pipeline-Design den CI/CD-Setup-Leitfaden. Sehen Sie sich auch die offizielle Changesets-Dokumentation an.

#Claude Code #Changeset #Versionsverwaltung #monorepo #release