Nâng CaoGit iconGit

semantic-release: làm sao tự động hóa versioning và CHANGELOG từ conventional commits?

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-release

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.

Xem toàn bộ Git cùng filter theo level & chủ đề con.

Mở danh sách Git