Mac husky commit 流程以及提交代碼時husky不生效解決方法

由于項目中一直未能規(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

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路徑添加上就可以了

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容