mirror of
https://github.com/ZJDoc/GitGuide.git
synced 2026-07-15 16:50:12 +08:00
127 lines
3.3 KiB
Markdown
127 lines
3.3 KiB
Markdown
|
|
# [CommitLint][Husky]消息校验
|
|
|
|
使用`commitizen`可以规范化提交信息,同样的,可以设置工具来检查提交信息是否符合格式要求
|
|
|
|
* [commitlint](https://github.com/conventional-changelog/commitlint):用于检查提交信息
|
|
|
|
* [husky](https://github.com/typicode/husky)是`hook`工具,作用于`git-commit`和`git-push`阶段
|
|
|
|
使用场景:
|
|
|
|
1. 本地信息检查
|
|
2. `CI`信息检查
|
|
|
|
## `commitlint`
|
|
|
|
### 全局安装
|
|
|
|
$ npm install -g @commitlint/cli @commitlint/config-conventional
|
|
|
|
### 本地安装
|
|
|
|
$ npm install --save-dev @commitlint/{cli,config-conventional}
|
|
|
|
### 配置规范
|
|
|
|
# 使用conventional规范
|
|
$ echo "module.exports = {extends: ['@commitlint/config-conventional']};" > commitlint.config.js
|
|
|
|
### 测试
|
|
|
|
需要全局安装才能在命令行使用`commitlint`
|
|
|
|
# 错误示例,类型后跟一个冒号和一个空格
|
|
$ echo "docs:添加新的文档" | commitlint
|
|
|
|
⧗ input: docs:添加新的文档
|
|
✖ subject may not be empty [subject-empty]
|
|
✖ type may not be empty [type-empty]
|
|
✖ found 2 problems, 0 warnings
|
|
(Need help? -> https://github.com/conventional-changelog/commitlint#what-is-commitlint )
|
|
# 正确示例
|
|
$ echo "docs: 添加新的文档" | commitlint
|
|
|
|
⧗ input: docs: 添加新的文档
|
|
✔ found 0 problems, 0 warnings
|
|
(Need help? -> https://github.com/conventional-changelog/commitlint#what-is-commitlint )
|
|
# 或者
|
|
$ commitlint "docs: asdf"
|
|
|
|
⧗ input: build(npm): 添加package.json
|
|
✔ found 0 problems, 0 warnings
|
|
(Need help? -> https://github.com/conventional-changelog/commitlint#what-is-commitlint )
|
|
|
|
## `husky`
|
|
|
|
### 安装
|
|
|
|
# 本地
|
|
$ npm install --save-dev husky
|
|
|
|
### 配置
|
|
|
|
在`package.json`中添加
|
|
|
|
// package.json
|
|
{
|
|
"husky": {
|
|
"hooks": {
|
|
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
当`git`提交信息提交`commitlint`检查,参数`-E`默认将`.git/COMMIT_EDITMSG`数据添加到`HUSKY_GIT_PARAMS`
|
|
|
|
### 测试
|
|
|
|
# 错误提交提交
|
|
$ git commit -m "忽略node_modules"
|
|
husky > commit-msg (node v10.15.3)
|
|
|
|
⧗ input: 忽略node_modules
|
|
✖ subject may not be empty [subject-empty]
|
|
✖ type may not be empty [type-empty]
|
|
✖ found 2 problems, 0 warnings
|
|
(Need help? -> https://github.com/conventional-changelog/commitlint#what-is-commitlint )
|
|
|
|
|
|
husky > commit-msg hook failed (add --no-verify to bypass)
|
|
# 正确提交
|
|
$ git commit -m "build(npm): 忽略node_modules"
|
|
husky > commit-msg (node v10.15.3)
|
|
|
|
⧗ input: build(npm): 忽略node_modules
|
|
✔ found 0 problems, 0 warnings
|
|
(Need help? -> https://github.com/conventional-changelog/commitlint#what-is-commitlint )
|
|
|
|
|
|
[master 8728336] build(npm): 忽略node_modules
|
|
1 file changed, 1 insertion(+)
|
|
create mode 100644 .gitignore
|
|
|
|
### 禁用`husky`
|
|
|
|
某一次提交想要禁用`husky`,可以添加参数`--no-verify`
|
|
|
|
$ git commit --no-verify -m "xxx"
|
|
|
|
## `CI`设置
|
|
|
|
以`Travis CI`为例
|
|
|
|
在本地安装
|
|
|
|
$ npm install --save-dev @commitlint/travis-cli
|
|
|
|
修改`travis.yml`
|
|
|
|
language: node_js
|
|
script:
|
|
- commitlint-travis
|
|
|
|
## 相关阅读
|
|
|
|
* [commitlint](https://conventional-changelog.github.io/commitlint/#/) |