Change log
什么是 Change log
conventional-changelog 是一款可以根据项目的commit
和 metadata
信息自动生成 changelogs
和 release notes
的系列工具,并且在辅助 standard-version 工具的情况下,可以自动帮你完成生成version
、打tag
, 生成CHANGELOG
等系列过程。
生态模块
- conventional-changelog-cli - conventional-changelog 核心命令行工具
- standard-changelog - 针对 angular commit 格式的命令行工具
- conventional-github-releaser - 利用 git metadata 针对 Github 的发布工具
- conventional-commits-detector - commit message 规范引用检测
- commitizen - 针对开发者简单的 commit 规范
- commitlint - commit Lint 工具
以上是 conventional-changelog 生态重要的几个主要模块,实际工作中这几个工具常常是配套使用的,当然也需要根据自己的情况而定。
conventional-changelog-cli默认推荐的 commit 标准是来自angular项目,除了 angular 标准以外,目前集成了包括 atom, codemirror, ember, eslint, express, jquery
等项目的标准,具体可以根据自己口味来选用。
安装
npm install -g conventional-changelog-cli
# 初始化 CHANGELOG
conventional-changelog -p angular -i CHANGELOG.md -s -r 0
- 添加 npm 快捷命令
// package.json
{
"scripts":{
"changelog":"conventional-changelog -p angular -i CHANGELOG.md -w -r 0"
}
}
语法
conventional-changelog -p <指定需要的规范> -i CHANGELOG.md -s
参数作用:
-p
:用来指定使用什么 commit message 标准:atom | angular | ...
-i
:表示从CHANGELOG.md
读取 changelog 信息-s
:表示读写 changelog 为同一文件-r
:表示生成 changelog 所需要使用的 release 版本数量,默认为1
,全部则是0
-w
:
使用示例
- 生成最近一次tag修改的
CHANGELOG.md
conventional-changelog -p angular -i CHANGELOG.md -s
- 生成项目至今的
CHANGELOG.md
conventional-changelog -p angular -i CHANGELOG.md -s -r 0
自定义参数
生成的 changlog 中有些常用内容可以通过自定义参数来根据需求更改,例如版本号、commit 地址等等。
- changelog 中生成的版本号即是从 package.json 中获取
version
字段来的 - commit 连接的仓库地址我们需要修改 package.json 中的
repository
地址 - changelog 中 issuse 默认的连接地址也是根据
repository
来生成的
如果你使用了第三方的协作系统(例如 bitbucket), 那么你可以使用这个标准conventional-changelog-angular-bitbucket。
或者像我们使用 redmine 来管理 isssue ,那么在生成 changelog 后可以使用 replace 工具来处理文本中的原有地址:
npm i -g replace
replace 'https://github.com/myproject/issues/' 'https://redmine.example.com' CHANGELOG.md