semantic-release phân tích commit messages từ merged PRs → tự động tính version bump → publish npm package/create GitHub Release → generate CHANGELOG.
Setup: npm i -D semantic-release @semantic-release/changelog @semantic-release/git, rồi khai báo plugins:
.releaserc.json:
{
"branches": ["main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
["@semantic-release/changelog", { "changelogFile": "CHANGELOG.md" }],
"@semantic-release/npm",
["@semantic-release/git", { "assets": ["CHANGELOG.md", "package.json"] }],
"@semantic-release/github"
]
}Version bump rules (tự động):
- fix: → patch (1.2.3 → 1.2.4)
- feat: → minor (1.2.3 → 1.3.0)
- feat!: hoặc BREAKING CHANGE: → major (1.2.3 → 2.0.0)
- chore:, docs:, style: → không bump
Trong CI: chạy npx semantic-release (GitHub Actions step với env GITHUB_TOKEN + NPM_TOKEN).
Lợi ích: zero human decision về version number, CHANGELOG luôn up-to-date, consistent release process. Nhược điểm: yêu cầu mọi developer follow Conventional Commits nghiêm túc.