semantic-release
安全自动化版本管理和包发布
semantic-release 自动化包发布流程:检测下一版本数,生成发布日志,并且发布包。
这样去除了人的感情因素和版本之间的联系,严格遵循了 Semantic Versioning 版本标准。
相信我们,这会让你的工作流变得更好。—— egghead.io
Highlights
- 完全自动化发布
- 强制 Semantic Versioning 标准
- 新特性和修复直接面向用户
- 通知维护者和客户有新更新
- 使用形式化的提交消息约定来记录代码库中的更改
- 与您的持续集成工作流程集成
- 避免与手动版本相关的潜在错误
- 通过插件支持任何包管理器和语言
- 通过可共享配置实现简单且可重复使用的配置
这是如何实现的
提交信息格式
semantic-release 使用提交消息来确定代码库中的更改类型。 遵循提交消息的形式化约定,语义释放自动确定下一个语义版本号,生成更改日志并发布发布。
默认情况下,语义释放使用Angular Commit Message Conventions。 可以使用@semantic-release / commit-analyzer和@semantic-release / release-notes-generator插件的预设或配置选项更改提交消息格式。
诸如commitizen,commitlint或semantic-git-commit-cli之类的工具可用于帮助贡献者并实施有效的提交消息。
以下是将基于提交消息完成的发布类型的示例:
Commit message Release type fix(pencil): stop graphite breaking when too much pressure applied Patch Release feat(pencil): add 'graphiteWidth' option Minor Feature Release perf(pencil): remove graphiteWidth option
BREAKING CHANGE: The graphiteWidth option has been removed. The default graphite width of 10mm is always used for performance reasons.
使用 CI 自动化
语义化发布意味着在 CI 环境下可以在发布分支每次成功构建时候自动执行。这样的话没有人直接参与发布过程,保证发布是不浪漫和不性感的。
促发一次发布
对于使用git push添加到发布分支(即master)的每个新提交,或者通过合并拉取请求或从另一个分支合并,会触发CI构建并运行语义释放命令,以便在存在代码库更改后发布 影响包功能的最后一个版本。
如果您需要更多控制版本的时间,您有几个选择:
- 在分发渠道上发布版本(例如npm的dist-tags)。 通过这种方式,您可以在默认情况下控制用户最终使用的内容,并且您可以决定何时将自动发布的版本提供给稳定频道并进行宣传。
- 在您准备发布后,在dev分支上进行开发并将其合并到发布分支(即master)。 语义释放只会在推送到发布分支时运行。
文档
- 使用
- 开始
- 安装
- ci 配置
- 配置
- 插件
- 可分享配置
- 扩展
- 插件
- 可分享配置
- 方法
- ci 配置
- 包管理和语言
- 开发指南
- js api
- 插件