通常情況下,commit message應該清晰明瞭,說明本次提交的目的,具體做了什麼操作。但是在日常開發中,大家的commit message都比較隨意,中英文混合使用的情況有時候很常見,這就導致後續程式碼維護成本比較大。
基於這些問題,可以通過husky和commitlint來規範commit的格式,來減小程式碼維護成本。
Angular規範是目前使用最廣的寫法,比較合理和系統化,並且有配套的工具(VSCode外掛git-commit-plugin就非常好用)
commit message介紹
commit message格式
<type>(<scope>): <subject>
type(必須)
用於說明 commit 的類別,只允許使用下面7個標識。
- feat:新功能(feature)
- fix:修補bug
- docs:文件(documentation)
- style: 格式(不影響程式碼執行的變動)
- refactor:重構(即不是新增功能,也不是修改bug的程式碼變動)
- test:增加測試
- chore:構建過程或輔助工具的變動
scope(可選)
scope用於說明 commit 影響的範圍,比如資料層、控制層、檢視層等等,視專案不同而不同。
subject
subject
是 commit 目的的簡短描述,不超過50個字元。
注意事項:
- 以動詞開頭,使用第一人稱現在時,比如
change
,而不是changed
或changes
- 第一個字母小寫
- 結尾不加句號(.)
安裝到專案
husky
-
安裝 husky
npm install husky --save-dev
-
初始化 husky
npx husky install
-
設定專案 install 自動初始化 husky ,在 package.json 新增指令碼
// package.json { "scripts": { "prepare": "husky install" } }
hook
新增 hook 勾子命令,專案中使用 commit-msg 勾子來校驗 commit message 是否符合規範: npx husky add .husky/commit-msg "npx --no-install commitlint --edit $1"
執行上面命令後,將自動在 .husky 資料夾下面新增對應的勾子檔案,如下
如果執行完新增勾子函式如果出現如下訊息
可以先執行 npx husky add .husky/commit-msg
,然後手動去commit-msg檔案裡新增npx --no-install commitlint --edit $1
commitlint
-
安裝 @commitlint/config-conventional @commitlint/cli
npm install --save-dev @commitlint/config-conventional @commitlint/cli
-
新增配置檔案 .commitlintrc.js
module.exports = { extends: [ '@commitlint/config-conventional' ] };