Mengimplementasikan Manajemen Versi Changeset dengan Claude Code
Pelajari cara mengimplementasikan manajemen versi berbasis Changeset dan pembuatan CHANGELOG otomatis dengan Claude Code. Mencakup dukungan monorepo, integrasi CI, dan desain alur rilis.
Mewujudkan Manajemen Versi Sistematis dengan Changeset
Changeset adalah tool untuk mengotomatisasi manajemen versi package dan pembuatan CHANGELOG. Sangat powerful terutama di lingkungan monorepo, memungkinkan pembangunan alur rilis yang konsisten dengan mempertimbangkan dependensi antar package. Claude Code mendukung secara akurat dari setup hingga integrasi CI.
Setup Awal
Minta Claude Code untuk setup.
> Perkenalkan Changeset ke project monorepo.
> Sertakan rilis otomatis dengan GitHub Actions dan pembuatan CHANGELOG.
# Install
npm install -D @changesets/cli @changesets/changelog-github
# Inisialisasi
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
}
}
Membuat Changeset
Cara membuat file Changeset yang mendeskripsikan perubahan.
# Buat Changeset secara interaktif
npx changeset
<!-- .changeset/happy-dogs-fly.md -->
---
"@myapp/ui": minor
"@myapp/utils": patch
---
Menambahkan varian "outline" ke component button.
Meningkatkan definisi tipe fungsi utility.
Contoh prompt untuk meminta Claude Code membuat Changeset:
> Buat Changeset untuk perubahan kali ini.
> Perubahan versi minor di @myapp/ui, tulis juga deskripsinya.
Konfigurasi npm scripts
// package.json
{
"scripts": {
"changeset": "changeset",
"changeset:status": "changeset status",
"version": "changeset version",
"release": "changeset publish",
"prerelease": "npm run build"
}
}
Rilis Otomatis dengan GitHub Actions
Workflow yang otomatis membuat PR version up saat PR di-merge, dan mempublikasikan ke npm setelah merge.
# .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: version up"
commit: "chore: version up"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
Pengaturan Lanjutan untuk Monorepo
Pola pengaturan untuk mengelola koordinasi antar package.
// .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 - Grup package yang selalu memiliki versi yang sama
- linked - Grup package yang versinya naik secara terkait
Manajemen Pre-release
Alur rilis versi beta dan RC.
# Masuk mode pre-release
npx changeset pre enter beta
# Tambahkan Changeset
npx changeset
# Terapkan versi pre-release
npx changeset version
# => 1.0.0 -> 1.1.0-beta.0
# Publikasikan
npx changeset publish
# Keluar mode pre-release
npx changeset pre exit
Validasi Changeset
Workflow untuk memeriksa di CI apakah Changeset disertakan dalam PR.
# .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
Format CHANGELOG Kustom
Pola untuk menyesuaikan output CHANGELOG.
// .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;
Summary
Changeset adalah tool yang kuat untuk mengotomatisasi manajemen versi sistematis dan alur rilis. Dengan memanfaatkan Claude Code, dari setup awal hingga integrasi CI dan dukungan monorepo bisa dibangun secara efisien.
Untuk metode manajemen monorepo, lihat Panduan Manajemen Monorepo, dan untuk desain pipeline CI/CD, lihat Panduan Setup CI/CD. Periksa juga Dokumentasi Resmi Changesets.
Related Posts
Setup MCP Server Claude Code dan Use Case Praktis
Panduan lengkap tentang kemampuan MCP server Claude Code. Pelajari cara menghubungkan tool eksternal, mengonfigurasi server, dan contoh integrasi dunia nyata.
Menguasai Claude Code Hooks: Auto-Format, Auto-Test, dan Lainnya
Pelajari cara menyiapkan auto-formatting dan auto-testing dengan Claude Code hooks. Dilengkapi contoh konfigurasi praktis dan use case dunia nyata.
Panduan Lengkap Menulis CLAUDE.md: Best Practice untuk Konfigurasi Project
Panduan menyeluruh untuk menulis file CLAUDE.md yang efektif. Pelajari cara mengkomunikasikan tech stack, konvensi, dan struktur project untuk memaksimalkan kualitas output Claude Code.