Skip to main content

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
    • 插件
    • 可分享配置
  • 支持
    • 资源
    • 常问问题
    • 问题
    • node 版本需求
    • node 支持政策

获取帮助

- stack overflow
- Spectrum 社区
- twitter

标签

团队