关于 semantic-release
semantic-release 根据代码提交自动确定版本号、生成更新日志,并发布至 npm 等包管理器。与持续集成工作流集成,消除手动版本管理的步骤。
主要功能
- 01分析提交消息,确定语义化版本号增量
- 02生成详细的更新日志和发布说明
- 03自动推送版本标签和发布至 npm、GitHub Releases
- 04支持多个发布渠道和自定义插件
- 05提供干运行模式验证发布步骤
适用场景
- 01集成至 CI/CD 流程自动化包发布
- 02维护多包 monorepo 的版本一致性
- 03减少手动版本管理和发布的人工错误
安装
选择你的系统或包管理器,复制命令到终端运行。
安装完成后运行semantic-release --version确认安装成功。
命令示例
常用命令按使用顺序排列。
详细介绍
📦🚀 semantic-release
全自动版本管理和软件包发布
semantic-release 可自动完成整个软件包发布工作流,包括:确定下一个版本号、生成发行说明以及发布软件包。
这消除了人类情绪与版本号之间的直接联系,严格遵循语义化版本规范,并向使用者传达变更的影响。
相信我们,这会让你的工作流变得更好。– egghead.io
亮点
- 全自动发布
- 强制遵循语义化版本规范
- 新功能和修复会立即提供给用户
- 通知维护者和用户有关新版本的信息
- 使用规范化的提交消息约定记录代码库中的变更
- 根据 git 合并,在不同的分发渠道上发布(例如 npm dist-tags)
- 集成到你的持续集成工作流中
- 避免与手动发布相关的潜在错误
- 通过插件,支持任何软件包管理器和编程语言
- 通过可共享配置实现简单、可复用的配置
- 支持 npm 软件包来源证明,通过 GitHub Actions 上的签名证明提升供应链安全性
它如何工作?
提交消息格式
semantic-release 使用提交消息来确定代码库中变更对使用者的影响。 遵循正式的提交消息规范后,semantic-release 会自动确定下一个语义化版本,生成变更日志并发布版本。
默认情况下,semantic-release 使用 Angular 提交消息规范。
可以通过 @semantic-release/commit-analyzer 和 @semantic-release/release-notes-generator 插件的 preset 或 config 选项更改提交消息格式。
可以使用 commitizen 或 commitlint 等工具,帮助贡献者编写并强制使用有效的提交消息。
下表展示了运行 semantic-release 时,不同的提交消息会触发哪种版本发布(使用默认配置):
| 提交消息 | 发布类型 |
|---|---|
fix(pencil): stop graphite breaking when too much pressure applied | |
feat(pencil): add 'graphiteWidth' option | |
perf(pencil): remove graphiteWidth optionBREAKING CHANGE: The graphiteWidth option has been removed.The default graphite width of 10mm is always used for performance reasons. | (请注意, BREAKING CHANGE: 标记必须位于提交消息的页脚中) |
使用 CI 自动化
semantic-release 旨在每次发布分支上的构建成功后,在 CI 环境中执行。 这样,发布流程就不需要任何人直接参与,并确保发布不带感情色彩,不拘泥于情怀。
触发发布
每当向某个发布分支(例如:master、main、next、beta)添加新提交时,无论是通过 git push、合并拉取请求,还是从其他分支合并,都会触发 CI 构建,并运行 semantic-release 命令。如果自上次发布以来,代码库中存在影响软件包功能的变更,该命令就会执行发布。
semantic-release 提供多种方式,用于控制已发布版本的发布时间、内容和受众。 以下教程提供了工作流示例:
发布步骤
运行测试后,semantic-release 命令将执行以下步骤:
| 步骤 | 说明 |
|---|---|
| 验证条件 | 验证继续发布所需的所有条件。 |
| 获取上次发布版本 | 通过分析 Git 标签,获取与上次发布版本对应的提交。 |
| 分析提交 | 根据自上次发布以来添加的提交,确定发布类型。 |
| 验证发布 | 验证发布是否符合规范。 |
| 生成说明 | 为自上次发布以来添加的提交生成发布说明。 |
| 创建 Git 标签 | 创建与新发布版本对应的 Git 标签。 |
| 准备 | 准备发布。 |
| 发布 | 发布版本。 |
| 通知 | 通知新版本发布或发生的错误。 |
要求
要使用 semantic-release,你需要:
- 将代码托管在 Git 仓库中
- 使用一项持续集成服务,该服务支持安全地配置凭据
- 在持续集成环境中安装符合我们的版本要求的 Git CLI 版本
- 在持续集成环境中安装符合我们的版本要求的 Node.js 版本
文档
- 使用
- 基础
- 扩展
- 配方
- 开发者指南
- 支持
获取帮助
徽章
在 README 中添加此徽章,让大家知道你的软件包是使用 semantic-release 发布的,并遵循哪种提交约定。
[](https://github.com/semantic-release/semantic-release)
团队
![]() | ![]() | ![]() |
|---|---|---|
| Gregor Martynus | Pierre Vanduynslager | Matt Travi |
Alumni
![]() | ![]() | ![]() | ![]() | ![]() |
|---|---|---|---|---|
| Stephan Bönnemann | Rolf Erik Lekang | Johannes Jörg Schmidt | Finn Pauls | Christoph Witzko |







