那么如何能优雅而又不失体面的提交你的代码呢?其实我们的 git commit message
是应该具备一些规范的。目前规范用的比较多的是 Angular 团队的规范
message 样例:
():
Type
:必须是下列之一
Subject:主题包含对变更的简洁描述
Body:具体的修改内容,可以包括与之前的对比
Footer:通常是 BREAKING CHANGE 或修复的 issue 链接
commitizen git commit 格式化工具, 为我们提供标准化的 commit 信息。 帮助我们统一项目commit , 便于信息的回溯或日志的生成。# commit message 格式
commitizen 只是提供一个commit 格式化或交互工具, 最终需要输出符合 commit 规则的信息给 git, 所以需要线了解 commit 格式规则
npm install -D commitizen cz-conventional-changelog
package.json中添加
"scripts": {
...
"commit": "git-cz"
},
"config": {
"commitizen": {
"path": "./node_modules/cz-conventional-changelog"
}
}
如果 Angular 的规范不符合我们的实际,同样我们也可以通过 cz-customizable 定制一套符合自己或者团队的规范。
npm install -D cz-customizable
同时package.json需要修改
"config": {
"commitizen": {
"path": "node_modules/cz-customizable"
}
}
之后对应项目目录下创建 .cz-config.js 文件,用来维护自己的格式
官网中有对应的样例配置文件:cz-customizable/cz-config-EXAMPLE.js at master · leoforfree/cz-customizable · GitHub
可以做到如果不符合校验规范,就会直接拒绝 commit 请求
# Angular 团队的规范
npm install -D @commitlint/config-conventional @commitlint/cli
# 自定义规范
npm install -D commitlint-config-cz @commitlint/cli
在项目目录下创建配置文件 .commitlintrc.js
Angular 团队的规范
module.exports = {
extends: [
''@commitlint/config-conventional''
],
rules: {
}
};
module.exports = {
extends: [
'cz'
],
rules: {
}
};
在做前端工程化时husky可以说是一个必不可少的工具。husky可以让我们向项目中方便添加git hooks。
官方链接:typicode/husky: Git hooks made easy woof! (github.com)
npm install -D husky
package.json中添加:
"husky": {
"hooks": {
...,
"commit-msg": "commitlint -e $GIT_PARAMS"
}
},
或者在 .huskyrc 文件中
{
"hooks": {
...,
"commit-msg": "commitlint -e $GIT_PARAMS"
}
}