husky
https://typicode.github.io/husky/#/?id=manual のとおりにhuskyをインストールして、npm scriptsのprepare
にhusky install
を設定する
lint-staged
を参考にlint-stagedをインストールして、.husky/pre-commit
にyarn lint-staged
の実行を定義してpackage.json
にlint-staged
で行うことを定義する
monorepo対応
特定のディレクトリ(今回はフロントエンド用ディレクトリ)だけhuskyを起動させたい。.husky
はプロジェクトルート直下である必要があるため、https://typicode.github.io/husky/#/?id=custom-directory を参考にprepare
と.husky/pre-commit
にディレクトリの移動を追加して調整する。
が、これだけだと関係ないディレクトリでもhuskyのpre-commitが起動してしまう。 が、husky.sh
がないのでエラーになる。
https://typicode.github.io/husky/#/?id=monorepoを見るとプロジェクトルートにpackage.json追加してそこでprepare設定すると書いてあるが、そのためだけにプロジェクトルートにみんなにyarn
させるのもなあ〜と思ったので、.husky/pre-commit
の中をいい感じにして解決した。
husky.sh
があればyarn lint-stagedを動かして、なければなにもしないようにした。
#!/usr/bin/env sh echo "husky pre-commit start." if [ -e "$(dirname -- "$0")/_/husky.sh" ]; then echo "husky.sh exists. so It has already been 'yarn install' in frontend directory." . "$(dirname -- "$0")/_/husky.sh" cd frontend yarn lint-staged else echo "husky.sh doesn't exists. so You aren't doing frontend development." fi echo "husky pre-commit end."
一旦これで逃げられる。
けど、なんか本当はもっと良い策がある気がしている…