为什么带BREAKING CHANGE标识的提交,semantic-release未触发版本发布?
未触发发布的核心原因
semantic-release默认遵循Conventional Commits提交规范,你的提交信息格式不符合破坏性变更的识别规则,主要问题如下:
BREAKING CHANGE:标识不能直接放在提交信息的首行(主题行),默认识别规则要求该标识必须满足以下任一条件:- 提交信息首行的类型字段后追加感叹号,示例格式:
feat!: 移除旧版用户接口 - 将
BREAKING CHANGE:放在提交信息的正文或页脚区域,首行依然遵循类型(可选范围): 描述的基础格式,示例:
- 提交信息首行的类型字段后追加感叹号,示例格式:
fix: 兼容部分 payload 解析逻辑 BREAKING CHANGE: The graphiteWidth option has been removed. The default graphite width of 10mm is always used for performance reasons.
你直接将BREAKING CHANGE:写在提交信息首行,缺少规范要求的类型前缀,也没有放在正文/页脚区域,因此插件无法识别为破坏性变更提交,不会触发发布。
- 若你修改过semantic-release的预设配置或自定义了发布规则,也可能覆盖默认的BREAKING CHANGE识别逻辑,可检查项目内的semantic-release配置项确认。
修复方案
- 修正提交信息格式,符合规范要求,示例命令:
git commit --amend -m "feat!: 移除废弃API端点" -m "BREAKING CHANGE: foo bar"
第二个-m参数的内容会被识别为提交正文,其中的BREAKING CHANGE:标识会被正确解析。 - 如果你确实需要支持首行直接写
BREAKING CHANGE:的格式,可以在commit-analyzer的releaseRules配置中添加对应匹配规则。
内容的提问来源于stack exchange,提问作者Evan Carroll
相关产品推荐
相关产品推荐

