mirror of
https://github.com/ZJDoc/GitGuide.git
synced 2026-07-23 20:30:26 +08:00
docs(tool): add commitizen/commitlint/huksy/conventional-changelog/generator-standard-readme
This commit is contained in:
127
docs/tool/commitlint-husky.md
Normal file
127
docs/tool/commitlint-husky.md
Normal file
@@ -0,0 +1,127 @@
|
||||
|
||||
# [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/#/)
|
||||
Reference in New Issue
Block a user