自动化发版指南:Semantic Release+GitHub Copilot实战
摘要
代码合并到main后,semantic-release自动分析提交、生成版本号、Changelog、打Tag并发布npm包。需
帮你彻底告别手动版本管理的时代——每次把代码合并到main分支后,semantic-release会自动算好版本号、生成漂亮的Changelog、打上Git Tag,最后把npm包推上去。全程不用人盯着,连点个按钮都不需要。

下面展开具体怎么落地。
安装semantic-release并配置基础插件
在项目根目录执行这行命令:
npm install --sa ve-dev semantic-release @semantic-release/commit-analyzer @semantic-release/release-notes-generator @semantic-release/github @semantic-release/npm
这里有个容易被忽略的细节:必须先在package.json里声明"publishConfig": {"registry": "https://registry.npmjs.org/"},否则@semantic-release/npm会因为没有找到发布源而默默失败——没有任何错误提示,你得自己排查。
然后创建.releaserc文件,写入基础配置:
{
"branches": ["main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/github",
"@semantic-release/npm"
]
}
这四款插件分工明确:分析提交信息、生成发布说明、与GitHub交互、最后推送到npm。一个都不能少。
配置GitHub Actions触发自动发布
在.github/workflows/release.yml里写入标准工作流:
name: Release
on:
push:
branches: [main]
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
- name: Semantic Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npx semantic-release
千万注意:NPM_TOKEN必须是Classic Token并且具备publish权限。如果用Automation Token,发布的步骤会直接中断,错误日志里只会留下一个“E401”,根本不会告诉你原因。很多新手在这一步卡了半天。
提交符合规范的代码变更
语义化提交不是可选项——它是整个流程唯一的输入源。每次提交必须严格遵循type(scope): subject格式,不然semantic-release会直接跳过去,连个警告都不会给。
方法一:修复bug → 提交信息写fix(ui): prevent button click duplication,触发Z位版本升级,比如1.2.3 → 1.2.4。
方法二:新增功能 → 提交信息写feat(api): add rate-limiting middleware,触发Y位版本升级,比如1.2.4 → 1.3.0。
方法三:破坏性变更 → 标题用feat!: drop IE11 support,同时在正文末尾加上BREAKING CHANGE: IE11 is no longer supported,触发X位版本升级,比如1.3.0 → 2.0.0。
验证发布结果
先看GitHub:打开仓库的Releases页面,确认自动生成了带vX.Y.Z前缀的新版本条目,并且Changelog完整。其次看Tags列表,Tag名必须和Release标题完全一致,比如v2.1.0。
再检查npm:访问https://www.npmjs.com/package/your-package-name,确认最新版本号与GitHub Release一致,Published时间戳应该在CI运行结束后5分钟内。
最后在本地执行npm view your-package-name version,返回值应该和网页显示一样。四步走完,整个自动发布流程就闭环了。
来源:互联网
本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。