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:
bash
npm install --save-dev semantic-release @semantic-release/changelog @semantic-release/git.releaserc.json:
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
GitHub Actions workflow:
yaml
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npx semantic-releaseLợ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.