基于提交信息自动发布版本
semantic-release 根据 Conventional Commits 计算下一个版本号、生成变更日志、打 tag 并发布。它通常在 CI 的发布分支上运行,需要完整的 git 历史和发布令牌。
npx semantic-release --dry-run
npx semantic-release --no-ci
CI=true npx semantic-release
.releaserc.json:
{
"branches": ["main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/npm",
"@semantic-release/github",
["@semantic-release/git", {
"assets": ["CHANGELOG.md", "package.json"],
"message": "chore(release): ${nextRelease.version}"
}]
]
}
fetch-depth: 0。feat:/fix:/BREAKING CHANGE。--dry-run 仍会读取令牌和配置;不要把 dry-run 当成完全无副作用。GITHUB_TOKEN、NPM_TOKEN 等权限;fork PR 默认拿不到。main 上配了 master 不会触发。package.json 和 CHANGELOG.md 会再产生提交;确保 CI 不会因此循环触发。release-please — GitHub 的发布自动化goreleaser — Go 制品发布commitlint — 提交信息规范