semantic release配置:CHANGELOG包含commit subject/body/footer
Semantic Release 配置CHANGELOG展示Commit完整正文、脚注的实现方法
默认配置下,semantic release 依赖的@semantic-release/release-notes-generator插件只会提取commit message的主题(subject)写入更新日志,通过自定义模板配置可以实现正文(body)、脚注(footer)的完整展示,具体操作如下:
核心配置逻辑
负责生成更新日志内容的是@semantic-release/release-notes-generator插件,@semantic-release/changelog仅负责把生成好的内容写入CHANGELOG.md文件,所有内容渲染规则都要配置在前者的参数中,配错插件位置是最常见的配置失效原因。
可直接参考如下可用配置,写入你的.releaserc、release.config.js等配置文件:
{ "plugins": [ "@semantic-release/commit-analyzer", ["@semantic-release/release-notes-generator", { "preset": "conventionalcommits", "presetConfig": { "commitTemplate": "* {{header}}\n{{#if body}}\n\n{{body}}\n{{/if}}{{#if footer}}\n\n{{footer}}\n{{/if}}" } }], ["@semantic-release/changelog", { "changelogFile": "CHANGELOG.md" }], // 保留你原有其他插件配置即可,比如npm发布、git提交等 "@semantic-release/npm", "@semantic-release/git" ] }
配置不生效常见排查点
- 检查commit格式是否符合Conventional Commits规范:正文、脚注必须和主题之间保留空行,否则解析器会把后续内容判定为主题的一部分,不会拆分到body、footer字段,自然无法正常渲染。标准格式参考:
fix: 修复文件上传大小限制失效问题
调整了服务端校验逻辑,补充了100M以上文件的分片上传支持
Closes #456
- 如果你使用了第三方自定义的changelog预设,部分预设会硬编码仅渲染commit主题的模板,这种情况需要像上面示例一样显式传入
commitTemplate参数,覆盖预设自带的渲染规则。 - 测试配置时注意:semantic release只会处理上次版本发布之后的新commit,历史版本已经生成的changelog内容不会被重新渲染,验证配置可以用
dry-run模式查看实时生成的更新日志内容,不需要实际发版。 - 如果你使用的是非官方的第三方日志生成插件,配置逻辑一致,找到对应插件控制单条commit渲染的模板配置项,把body、footer字段加入渲染规则即可。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

