Skip to main content

Change log

什么是 Change log

conventional-changelog 是一款可以根据项目的commitmetadata信息自动生成 changelogsrelease notes的系列工具,并且在辅助 standard-version 工具的情况下,可以自动帮你完成生成version、打tag, 生成CHANGELOG等系列过程。

生态模块

以上是 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地址
  • changelogissuse 默认的连接地址也是根据 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