前言
git作为一个开发人员必不可少的工具,代码提交也是日常一个非常频繁的操作,规范提交信息肯定是有必要的。
如果手动按照规范提交代码,不免觉着有点麻烦。怎么办呢?最好是可以使用一个工具。
commitizen就是一个比较合适的git提交规范信息的工具,commitizen可以帮助团队规范化commit提交格式信息,有利于追溯代码。
使用commitizen 进行规范提交提交后,我们就可以使用 standard-version自动化版本控制,例如更新 CHANGELOG.md。
一. Committezen规范提交信息
当你使用Committezen提交时,系统会提示您在提交时填写所有必需的提交字段, 不需要再深入研究commit提交信息首选格式;命令行上获取有关提交消息格式的即时反馈,并提示输入必填字段即可。
规范提交信息
- 规范提交信息的好处如下:
- 清晰的历史记录,让开发人员高效地追溯代码
- 自动化生成CHANGELOG.MD
- 基于提交的类型,自动决定语义化的版本变更
- 基于提交类型,触发构建和部署自动化流程
<type>[optional scope]: <subject>
//空一行
[optional body]
//空一行
[optional footer(s)]
type 提交的类别,必须是以下类型中的一个:
feat:增加一个新功能
fix:修复bug
docs:只修改了文档
style:做了不影响代码含义的修改,空格、格式化、缺少分号等等
refactor:代码重构,既不是修复bug,也不是新功能的修改
perf:改进性能的代码
test:增加测试或更新已有的测试
chore:构建或辅助工具或依赖库的更新
话不多说,开始实际操作。
Installing
First,安装Committeen cli工具
npm install commitizen -D
Next,命令行执行以下命令初始化项目:
commitizen init cz-conventional-changelog --save-dev --save-exact
Or 使用Yarn:
commitizen init cz-conventional-changelog --yarn --dev --exact
Then,将config.commitizen添加到package.json
的根目录中,如下所示:
"config": {
"commitizen": {
"path": "cz-conventional-changelog"
}
}
在package.json
中增加如下脚本:
"scripts": {
"commit" : "git-cz"
}
现在可以npm run commit,操作如下:
- git add . 文件
-
npm run commit,此时 commitizen 会通过 CLI 对我们进行询问:
image.png -
选择提交类型后,根据实际情况填写详细信息:
image.png
image.png
以上就实现半自动化规范提交信息了。
二. standard-version自动化版本控制
Installing
npm i -D standard-version
在package.json
的scripts中添加:
"scripts": {
"commit" : "git-cz",
"release": "standard-version"
}
现在你可以使用 npm run release,操作如下:
- git add . 文件
- npm run commit
-
npm run release
image.png
上述操作即可完成CHANGELOG.md自动化版本控制。
自定义CHANGELOG.md生成
默认情况下standard-version 只会在 CHANGELOG.md 中记录 feat 和 fix 类型的提交,可以自定义,操作如下:
- 根目录下创建文件: .versionrc, .versionrc.json or .versionrc.js
- 以创建.versionrc为例,参考配置信息如下:
{
"types": [
{"type": "feat", "section": "Features"},
{"type": "fix", "section": "Bug Fixes"},
{"type": "chore", "hidden": true},
{"type": "docs", "hidden": true},
{"type": "style", "hidden": true},
{"type": "refactor", "hidden": true},
{"type": "perf", "hidden": true},
{"type": "test", "hidden": true}
]
}
- type用于匹配 Conventional Commits 使用的<type>的字符串。
- section匹配的提交类型将在CHANGELOG.md中显示的部分。
- hidden设置为true可在CHANGELOG.md中隐藏匹配的提交类型。
CHANGELOG.md-参考配置信息
参考文档:
规范GIT代码提交信息&自动化版本管理
约定式提交规范
commitizen不要在瞎提交git信息啦!
commitizen - github
commitizen - npm
standard-version - npm
standard-version - github
网友评论