如何配置@semantic-release让refactor提交触发发布并写入CHANGELOG
让refactor类型提交同时触发发版、写入CHANGELOG的配置方法
你现在遇到的「refactor提交能触发patch版本发版、但CHANGELOG里没有对应记录」,本质是Angular预设的默认规则里,refactor类型被标记为隐藏,不会被release-notes-generator插件抓取生成日志,只要覆写预设的类型可见规则就能解决,不需要改插件源码。
你只需要在semantic-release的配置文件里,找到@semantic-release/release-notes-generator的配置节点,替换成下面的内容即可,和你之前已经配好的commit-analyzer规则完全兼容、不会冲突:
[ "@semantic-release/release-notes-generator", { "preset": "angular", "presetConfig": { "types": [ // 保留Angular预设默认的公开类型规则 {"type": "feat", "section": "新功能", "hidden": false}, {"type": "fix", "section": "问题修复", "hidden": false}, {"type": "perf", "section": "性能优化", "hidden": false}, {"type": "docs", "section": "文档更新", "hidden": false}, // 新增refactor类型的展示规则 {"type": "refactor", "section": "代码重构", "hidden": false}, // 保留原预设默认隐藏的类型规则,避免影响原有日志生成逻辑 {"type": "chore", "hidden": true}, {"type": "style", "hidden": true}, {"type": "ci", "hidden": true}, {"type": "test", "hidden": true} ] } } ]
关键参数说明
- 针对refactor新增的这条规则,三个参数的作用:
type:匹配提交信息里的refactor类型标识,和团队约定的commit规范type值对应section:这类提交在CHANGELOG里的分组标题,可以根据团队习惯自定义修改(比如改成「重构调整」「非功能性优化」都可以,不影响功能)hidden:必须设成false,Angular预设里这个值默认是true也就是不展示,这是refactor提交进不了CHANGELOG的直接原因
- 这套配置和你之前写的commit-analyzer规则是完全独立的:前者管「提交要不要触发发版」,后者管「提交的内容要不要写到日志里」,两边要分别配置,不能共用规则。
配置生效后的实际效果
配完之后生成的CHANGELOG结构就和你期望的完全一致,以0.6.4版本为例,实际输出效果为:
## [0.6.4](.../compare/v0.6.3...v0.6.4) (2024-xx-xx) ### 代码重构 - 拆分用户权限校验模块的冗余逻辑 (#123) - 替换日期处理工具的第三方依赖 (#121) ### 问题修复 - 修复订单计算时的浮点精度丢失问题 (#125) ## [0.6.3](.../compare/v0.6.2...v0.6.3) (2024-xx-xx)
常见踩坑提醒
- 如果团队不想把docs类型的提交展示在CHANGELOG里,直接把对应条目里的
hidden值改成true就行,不会影响refactor的展示逻辑 - 不要随便删掉types列表里的其他原有条目,否则会导致原本能正常展示的feat、fix类型提交无法生成日志。
内容的提问来源于stack exchange,提问作者Manu Artero
相关产品推荐
相关产品推荐

