青いやつの進捗日記。

メモとしてべんきょうのしんちょくをかいていきます。あとで自分が検索しやすいもん

huskyでpre-commit時にlintする monorepoで

typicode.github.io

husky

https://typicode.github.io/husky/#/?id=manual のとおりにhuskyをインストールして、npm scriptsのpreparehusky installを設定する

lint-staged

qiita.com

を参考にlint-stagedをインストールして、.husky/pre-commityarn lint-stagedの実行を定義してpackage.jsonlint-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の中をいい感じにして解決した。

www.server-memo.net

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."

一旦これで逃げられる。
けど、なんか本当はもっと良い策がある気がしている…