semantic-release可实现main分支合并后自动版本计算、changelog生成、git tag打标和npm发布;需安装插件、配置.releaserc、github actions工作流,并严格遵循feat/fix/feat!语义化提交格式。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让GitHub仓库每次合并到main分支后,自动完成版本号计算、Changelog生成、Git Tag打标和npm包发布,全程无需人工干预。
安装semantic-release并配置基础插件
在项目根目录执行:npm install --save-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文件,写入以下内容:
{<br> "branches": ["main"],<br> "plugins": [<br> "@semantic-release/commit-analyzer",<br> "@semantic-release/release-notes-generator",<br> "@semantic-release/github",<br> "@semantic-release/npm"<br> ]<br>}
配置GitHub Actions触发自动发布
在.github/workflows/release.yml中写入标准CI流程:
name: Release<br>on:<br> push:<br> branches: [main]<br>jobs:<br> release:<br> runs-on: ubuntu-latest<br> steps:<br> - uses: actions/checkout@v4<br> - uses: actions/setup-node@v4<br> with:<br> node-version: 20<br> - name: Install dependencies<br> run: npm ci<br> - name: Semantic Release<br> env:<br> GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}<br> NPM_TOKEN: ${{ secrets.NPM_TOKEN }}<br> run: npx semantic-release
【NPM_TOKEN必须是Classic Token且具备publish权限】,使用Automation Token会因权限不足导致发布中断,错误日志仅显示“E401”而不说明原因。
提交符合规范的代码变更
语义化提交不是可选项——它是整个流程的唯一输入源。每次提交必须严格遵循type(scope): subject格式。
GInstall OneClick — 一键安装 GitHub 项目:规划、克隆、安装 Node 依赖、运行开发脚本。适用于想要获取 GitHubNode.js 项目的用户。
方法一:修复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。
不按此格式提交的代码,即使合并进main分支,semantic-release也会跳过该次发布,不会报错也不会警告。
验证发布结果
第一步:打开GitHub仓库的Releases页面,确认已自动生成带vX.Y.Z前缀的新版本条目,且包含完整Changelog。
第二步:进入Tags列表,检查对应Git Tag是否已推送成功,Tag名必须与Release标题完全一致(例如v2.1.0)。
第三步:访问https://www.npmjs.com/package/your-package-name,确认最新版本号与GitHub Release一致,且Published时间戳在CI运行完成后5分钟内。
第四步:在本地执行npm view your-package-name version,返回值应与网页显示完全相同。










