git中,許多的操作指令都有所謂的hook,提供給我們先做一些前置作業再去真正執行git的指令。較常用hook的像是pre-commit, pre-push等等,通常會用這些hook搭配其他套件來做程式碼的規範檢查和自動化測試,來避免不好的程式碼推上repository。
git所提供的hook放在<project>/.git/hooks裡面,可以自行寫shell或是其他腳本語言去修改。不過這樣的方式比較麻煩,所以我們是透過husky,將指令定義在package.json來達成的。
husky
husky的這套件的描述就是
Git hooks made easy
有多簡單呢?假設現在我們要在commit之前先通過lint檢查,push之前通過測試,只要兩個步驟
- 安裝
husky
yarn add husky --dev
- 修改
package.json,定義precommithook
|
|
lint-staged
不過通常我們不會希望每次commit之前,都對所有的js檔案做lint,只要對這次修改的檔案去檢查即可。
這時候就可以搭配lint-staged來使用。
- 安裝
lint-staged
yarn add lint-staged --dev
- 修改
package.json,加入lint-staged設定
|
|
lint-staded可以不只做一件事,我們可以再順便加上css檔案的lint, format
|
|