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."
一旦これで逃げられる。
けど、なんか本当はもっと良い策がある気がしている…