npm本身不直接提供自动化发版和写日志功能,但可通过semantic-release实现全自动语义化发版(含版本计算、tag推送、npm发布、CHANGELOG生成),或用conventional-changelog本地生成规范日志,二者均依赖Conventional Commits格式的提交信息,并可在CI(如GitHub Actions)中集成触发。

npm 本身不直接提供自动化发版和写日志功能,但通过组合 npm scripts、第三方工具(如 semantic-release、conventional-changelog)和 Git 工作流,可以实现零手动的语义化发版与自动生成 CHANGELOG。
用 semantic-release 实现全自动发版
semantic-release 会根据提交信息(Conventional Commits)自动判断版本号、生成日志、打 Git tag、发布到 npm registry。
- 安装:运行
npm install --save-dev semantic-release @semantic-release/npm @semantic-release/git - 配置
package.json中的"release"字段或新建.releaserc:
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/npm",
"@semantic-release/git"
]
}
- 确保 CI 环境(如 GitHub Actions)中设置了
NPM_TOKEN和GITHUB_TOKEN - 在 CI 的发布阶段执行
npx semantic-release,它会自动完成:分析提交 → 计算版本 → 更新 package.json → 构建 → 发布到 npm → 推送 tag 和 CHANGELOG.md
用 conventional-changelog 本地生成日志
适合想保留手动发版控制权,但又希望日志规范、可复用的场景。
- 安装:
npm install --save-dev conventional-changelog-cli - 生成完整日志:
npx conventional-changelog -p angular -i CHANGELOG.md -s - 只生成本次 release 日志(配合 version 脚本):
npx conventional-changelog -p angular -i CHANGELOG.md -s -r 1 - 建议在
package.json的scripts中定义:
"scripts": {
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
"release:patch": "npm run changelog && npm version patch && npm publish"
}
提交信息必须遵循 Conventional Commits
所有自动化都依赖提交格式。每次 git commit 需按规则书写:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
-
feat: add user login button→ 触发 minor 版本(0.1.0) -
fix: resolve token expiration bug→ 触发 patch 版本(0.0.1) -
chore: upgrade webpack to v5→ 不触发版本变更 -
feat!: drop IE11 support或含BREAKING CHANGE:→ 触发 major 版本(1.0.0)
可用 commitizen + cz-conventional-changelog 辅助提交,避免手误。
CI 中集成发版流程(以 GitHub Actions 为例)
在 .github/workflows/release.yml 中定义:
- 触发条件为推送 tag(如
git tag v1.2.0 && git push origin v1.2.0) - 安装依赖后运行
npx semantic-release - 失败时自动通知,成功后自动更新 GitHub Release 页面并附上 CHANGELOG 片段
无需人工执行 npm publish,也不用手动维护版本号和日志文件。

















