由于項目中一直未能規(guī)范提交日志,導致提交的的東西亂七八糟的,所以決定使用commitlint+husky 來規(guī)范 git commit
安裝
npm install husky@4.3.8 --save-dev
或者
yarn add husky@4.3.8 -D
這里需要注意一點是安裝最新husky版本會有各種各樣問題, 例如我使用命令行提交的會遇到這個問題
$ git commit -m "xx"
error Command "husky-run" not found.
安裝的版本是 "husky": "^7.0.1",, 查閱了網(wǎng)上一些資料發(fā)現(xiàn)是新版本的問題,并參照了一些三方開源庫
react-native-document-picker
因為最新一直在調研移動端瀏覽文件的庫,發(fā)現(xiàn)庫維護的還是比較及時的,所以查看了它里面的husky

發(fā)現(xiàn)它的版本是
^4.2.5, 其實真實匹配安裝的版本是4.3.8,大家有興趣可以自己查看yarn.lock.
所以 建議大家安裝 4.3.8版本,可以確保沒有問題,還有一點需要注意的是,可能某些人用空項目做測試,但是前提一定要進行 git init.
配置
如果使用commitlint,首先需要安裝對用的包
npm install --save-dev @commitlint/config-conventional @commitlint/cli
或者
yarn add @commitlint/config-conventional @commitlint/cli -D
然后創(chuàng)建配置文件.commitlintrc.js 或者 commitlint.config.js 都可以,或者在package.json中配置也行,我這里采用配置.commitlintrc.js, 在文件中引入插件。
// .commitlintrc.js 文件
module.exports = {
extends: ["@commitlint/config-conventional"],
};
在package.json 配置提交鉤子
...
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
...
這里配置了commit-msg攔截鉤子,當然還可以配置其他的,最常用的是pre-commit,我們可以做一些lint操作。
配置完以上的信息,這些終端執(zhí)行 git commit -m "xx" 這時候驗證就會生效
git commit -m 'xx'
husky > commit-msg (node v12.13.0)
? input: xx
? subject may not be empty [subject-empty]
? type may not be empty [type-empty]
? found 2 problems, 0 warnings
? Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint
husky > commit-msg hook failed (add --no-verify to bypass)
我們就需要按照既定的規(guī)則去提交
- 提交格式
git commit -m <type>[optional scope]: <description>
type :用于表明我們這次提交的改動類型,是新增了功能?還是修改了測試代碼?又或者是更新了文檔?
optional scope:一個可選的修改范圍。用于標識此次提交主要涉及到代碼中哪個模塊。
description:一句話描述此次提交的主要內(nèi)容,做到言簡意賅。
- 常用的 type 類型
| 類型 | 描述 |
|---|---|
| build | 編譯相關的修改,例如發(fā)布版本、對項目構建或者依賴的改動 |
| chore | 其他修改, 比如改變構建流程、或者增加依賴庫、工具等 |
| ci | 持續(xù)集成修改 |
| docs | 文檔修改 |
| feat | 新特性、新功能 |
| fix | 修改 bug |
| perf | 優(yōu)化相關,比如提升性能、體驗 |
| refactor | 回滾到上一個版本 |
| style | 代碼格式修改, 注意不是 css 修改 |
| test | 測試用例修改 |
- 例子
git commit -m 'fix(login): 修復登錄的bug'
我們會發(fā)現(xiàn)提交成功了
git commit -m 'fix(login): 修復登錄的bug'
husky > commit-msg (node v12.13.0)
[master ae56c33] fix(login): 修復登錄的bug
1 file changed, 2 deletions(-)
在mac 上我們用sourceTree 提交會遇不校驗的問題,大家可以參照
mac上使用sourceTree提交代碼不會走husky自定義的鉤子
我遇到的問題不是npx找不到,不過解決思路是一樣的

cd ~
vim .huskyrc
把yarn路徑添加上就可以了