一つのリポジトリで、例えばfrontとback_endとディレクトリを作成してそれぞれでソースコードを管理している場合に、huskyを適用してコミット時に特定のコマンドを実行させる手順をまとめました。

今回は、コミットされるたびに、eslint, prettierのチェックをするようにします。

手順はこちらにあるものをほぼそのまま実行した感じになります。 Using Husky Git Hooks and Lint-Staged With Nested Folders

ディレクトリ構成は以下と仮定します。

├── /front
│   ├── ...
│   └── package.json
└── /back_end
    ├── ...
    └── package.json

front側にhuskyを設定していきます。

1. huskyインストール

$ cd front

# npm の場合
$ npm install -D husky lint-staged

# yarn の場合
$ yarn add -D husky lint-staged

2. package.jsonmのscriptsにprepareを追加

{
  "scripts": {
      // other scripts omitted 
      "prepare": "cd ../ && husky install ./front/.husky"
   }
}

front の部分が、ネストしているディレクトリのパスになります。

3. pre-commitの作成

$ cd front/.husky
$ touch pre-commit

コミット時にコマンドを実行されるようにするため、pre-commitを.huskyディレクトリ内に作成。 中身は以下。

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
cd ./front && npx lint-staged 

front の部分が、ネストしているディレクトリのパスになります。

4.実行権限追加

$ chmod +x ./.husky/pre-commit

5. .lintstagedrcファイル作成

$ cd front
$ touch .lintstagedrc

中身は以下。

{
  "*.{js,ts,tsx,scss,css,md}": ["eslint", "prettier --write"]
} 

これで、コミットされる度に、huskyを使ったeslint, prettierのチェックが走るようになります。