约定式提交配置
Commitizen
- 全局安装
commitizen
和cz-conventional-changelog
pnpm install -g commitizen
pnpm install -g cz-conventional-changelog
- 在电脑用户的根目录创建.czrc文件,不然使用的时候会进入命令行
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
-
安装并配置cz-customizable插件,用来自定义commitizen提示
-
安装cz-customizable
pnpm install cz-customizable --save-dev
-
添加以下配置到
package.json
中"config": { "commitizen": { "path": "node_modules/cz-customizable" } }
-
-
项目根目录下创建
.cz-config.js
文件来自定义提示module.exports = { // 可选类型 types: [ { value: ':sparkles: feat', name: '✨ feat: 新功能' }, { value: ':bug: fix', name: '🐛 fix: 修复' }, { value: ':memo: docs', name: '📝 docs: 文档变更' }, { value: ':lipstick: style', name: '💄 style: 代码格式(不影响代码运行的变动)' }, { value: ':recycle: refactor', name: '♻️ refactor: 重构(既不增加feature,也不是修复bug)' }, { value: ':zap: perf', name: '⚡️ perf: 性能优化' }, { value: ':white_check_mark: test', name: '✅ test: 增加测试' }, { value: ':wrench: chore', name: '🔧 chore: 构建过程或辅助工具的变动' }, { value: ':rewind: revert', name: '⏪ revert: 回退' }, { value: ':rocket: build', name: '🚀 build: 打包' } ], // 步骤 messages: { type: '请选择提交的类型:', customScope: '情输入修改的范围(可选)', subject: '请简要描述提交(必填)', body: '请输入详细描述(可选)', footer: '请输入要关闭的issus(可选)', confirmCommit: '确认要使用以上信息提交?(y/n)' }, // 默认长度72 subjectLimit: 72 }
生成 Change log
如果你的所有 commit 都符合 Angular 格式,那么发布新版本时, Change log 就可以用脚本自动生成。
生成的文档包括以下三个部分。
- New features
- Bug fixes
- Breaking changes.
每个部分都会罗列相关的 commit ,并且有指向这些 commit 的链接。当然,生成的文档允许手动修改,所以发布前,你还可以添加其他内容。
-
安装
conventional-changelog-cli
pnpm install -g conventional-changelog-cli
-
通过执行命令生成 CHANGELOG.md 文件:
conventional-changelog -p angular -i CHANGELOG.md -s
上面 changelog 命令不会覆盖以前的 CHANGELOG
,只会在 CHANGELOG.md 的头部加上自从上次发布以来的变动。
利用standard-version 自动生成changelog
利用standard-version
可以在发新版本的时候自动生成changelog,配合自定义配置生成丰富的changeglog
- 安装
standard-version
pnpm install -D standard-version
- 在
package.json
里添加
"scripts": {
"release": "standard-version"
}
3.执行pnpm run release
就会根据你的commit信息自动生成 CHANGELOG.md 文件。当你的commit type是 feat和fix的时候执行这 个命令,它会自增版本号。
standard-version 增加表情设置
为了让生成的CHANGELOG 带着gitmoji表情,我们需要额外配置一下,因为我们在上边配置的.cz-config.js
里type的value是带着表情的,所以它读不到对应的type生成的更改日志是没法分类的,因为standard-version
默认的预设是 angular。所以这里我们装一个别人写好的工具:conventional-changelog-gitmoji-config
- 安装
pnpm i -D conventional-changelog-gitmoji-config
- 然后在
package.json
里更改之前的配置
"scripts": {
"release": "standard-version --preset gitmoji-config"
}
这样就可以使用pnpm run release
自动发布、打tag、和生成CHANGELOG了。