工欲善其事,必先利其器:使用commitlint+husky規(guī)范commit格式

逛Github看到那些優(yōu)秀項(xiàng)目美觀、清晰的change log就很好奇怎么做到,直到……………………

commit格式介紹

美觀、清晰的change log只要自己在commit的時(shí)候好好寫就差不多了,但是在多人協(xié)作項(xiàng)目中就難以統(tǒng)一。如果有一個(gè)設(shè)計(jì)優(yōu)秀、還有自動(dòng)化工具支持的規(guī)范,那就再好不過了。
約定式提交正是這么一個(gè)規(guī)范,具體的內(nèi)容請?zhí)D(zhuǎn)到頁面上閱讀,內(nèi)容不多,很簡單。

通過git hook實(shí)現(xiàn)commit時(shí)檢查格式

規(guī)范這東西,如非自覺,真是很難堅(jiān)持。因此,有必要通過一些手段來強(qiáng)制去遵守。因此本文的重點(diǎn)就是搭建一個(gè)環(huán)境,讓我們在commit時(shí)能自動(dòng)的檢查commit內(nèi)容是否符合了上面的規(guī)范,并指出是哪些地方的問題。

首先,到Node.js官網(wǎng)下載并安裝該環(huán)境(務(wù)必下載最新版,否則后續(xù)有命令執(zhí)行會(huì)失敗),安裝時(shí)一路保持默認(rèn)。安裝結(jié)束在命令行窗口檢查是否安裝成功!

后續(xù)的所有操作都在項(xiàng)目的根目錄執(zhí)行?。?!在項(xiàng)目根目錄右鍵選擇Git bash here進(jìn)行操作。

創(chuàng)建package.json文件

執(zhí)行npm init -y創(chuàng)建默認(rèn)參數(shù)的package.json文件,不帶-y則可以跟著提示一步步自定義各個(gè)參數(shù),這里用默認(rèn)的就夠了。


安裝commitlint

執(zhí)行npm install --save-dev @commitlint/config-conventional @commitlint/cli,安裝commitlint并下載commit風(fēng)格文件,這里是@commitlint/config-conventional。還有別的規(guī)范文件,可以到github去看看哪個(gè)適合自己,當(dāng)然也可以自定義。點(diǎn)這里
過去。


接著執(zhí)行echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js創(chuàng)建風(fēng)格指定文件。前面是下載,可以下載多個(gè),通過配置文件指定使用其中一個(gè),這里我就是用啥就只下載啥了。

執(zhí)行完這兩個(gè)指令,根目錄下就會(huì)多了三個(gè)東西

安裝husky

commitlint安裝完就可以檢測commit message是否符合規(guī)范了,不過是手動(dòng)檢查,明顯不適合我這個(gè)懶人。所以需要再安裝一個(gè)工具讓git hook能在commit時(shí)觸發(fā)去檢查并給出錯(cuò)誤信息。

  1. 執(zhí)行npm install husky --save-dev命令,安裝husky
  2. 執(zhí)行npx husky install激活鉤子
  3. 執(zhí)行npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"',添加commit-msg鉤子


測試

如圖所示,不符合規(guī)范的commit信息會(huì)提示出錯(cuò),并且指出了錯(cuò)誤的地方。

一鍵執(zhí)行腳本

新建txt文件,復(fù)制下面的內(nèi)容進(jìn)去,保存后將文件后綴改為.bat。將該批處理文件放到項(xiàng)目倉庫根目錄,雙擊執(zhí)行,打完收工!

if not exist .git echo Please create a git repository first! & pause

call npm init -y

call npm install --save-dev @commitlint/config-conventional @commitlint/cli

echo module.exports = {extends: ['@commitlint/config-conventional']} > commitlint.config.js

call npm install husky --save-dev

call npx husky install

::call npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'
echo #!/bin/sh > .husky\commit-msg
echo . "$(dirname "$0")/_/husky.sh" >> .husky\commit-msg
echo.  >> .husky\commit-msg
echo npx --no-install commitlint --edit "$1" >> .husky\commit-msg
pause
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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