husky
from git hooks
git hooksを楽にしてくれるらしい
docs
github
package.json内に設定を書く
GPT-4.icon
huskyは、Gitフックを楽に管理できるツールです。
例
リポジトリ内でフック設定を管理できる
シェルスクリプトじゃなく、npm scriptsやNode.jsコードを呼び出しできる
複雑なインストール・権限管理を気にせず済む
実際の流れをざっくり書くと:
1. huskyをインストールする
$ npm install husky --save-dev
2. huskyをセットアップ
$ npx husky install
これで .husky/ フォルダができる(ここに各フックのスクリプトが入る)
注意
package.jsonに、prepareスクリプトも追加します:
code:json
{
"scripts": {
"prepare": "husky install"
}
}
(こうすると、clone直後のnpm installだけでhuskyもセットアップされる)
3. フックを追加
例えば、コミット前にlintを自動実行したいなら:
$ npx husky add .husky/pre-commit "npm run lint"
これで .husky/pre-commit というファイルが作られて、こんな中身になります:
code:bash
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npm run lint
つまり、コミット直前に自動でnpm run lintが走るようになる!
よくある使い方
pre-commit → eslintやprettierを走らせる
commit-msg → コミットメッセージのフォーマットをチェック(たとえば Conventional Commits に強制するとか)
pre-push → npm testを実行して、テストにパスしないとpushできないようにする
最近はさらに lint-stagedと組み合わせて
「変更したファイルだけlintする」みたいな高度な運用もよくやります。