2020-4-23 seo達人
隨著項目體積的增加,參與到項目中的同學越來越多,每個人都有自己的打 git log 的習慣:
add: 添加...
[add]: 添加...
Add 添加...
為了形成統(tǒng)一的規(guī)范,達成共識,從而降低協(xié)作開發(fā)成本,需要對 git commit 記錄進行規(guī)范。
規(guī)范 git commit 記錄,需要做兩件事情:
問:既然已經(jīng)交互式生成了規(guī)范記錄,為什么需要在 hooks 進行檢查?
交互式生成 commit 記錄,需要用戶調(diào)用自定義的 npm scripts,例如npm run commit
。但還是可以直接調(diào)用原生 git 命令 git commit
來提交記錄。而檢查是在正式提交前進行的,因此不符合要求的記錄不會生效,需要重新 commit。
前期調(diào)研結果,關于 commit 提示有兩種做法:
方法 1 的優(yōu)缺點:
優(yōu)點 1: 直接安裝對應的 adapter 即可
優(yōu)點 2: 無開發(fā)成本
缺點 1: 無法定制,不一定滿足團隊需要
方法 2 的優(yōu)缺點:
優(yōu)點 1: 可定制,滿足開發(fā)需求
優(yōu)點 2: 單獨成庫,發(fā)布 tnpm,作為技術建設
缺點 1: 需要單獨一個倉庫(但開發(fā)成本不高)
在實際工作中,發(fā)現(xiàn)方法 1 中的常用規(guī)范,足夠覆蓋團隊日常開發(fā)場景。所以,選擇了方法 1.
step1: 安裝 npm 包
npm i --save-dev commitizen cz-conventional-changelog @commitlint/cli @commitlint/config-conventional husky
添加 package.json 的配置:
"scripts": { "commit": "git-cz" }, "husky": { "hooks": { "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" }
}, "config": { "commitizen": { "path": "./node_modules/cz-conventional-changelog" }
}
在項目根目錄下創(chuàng)建commitlint.config.js
:
module.exports = { extends: ["@commitlint/config-conventional"]
};
使用方法:不再使用git commit -m ...
,而是調(diào)用npm run commit
。
<img src="https://tva1.sinaimg.cn/large/006tNbRwly1gbjcfr3xb5j30cw00tjrd.jpg" style="width: 100% !important;"/>