はじめに
この記事では、Next.js 環境において Husky と lint-staged を利用してコミット前に ESLint と Prettier を実行する手順を記載します。
Husky とは
- Git hooks を簡単に管理するためのツール
- コード品質を担保するために利用される
- Git hooks とは、Git ワークフロー(コミット前後、プッシュ前など)で実行されるスクリプト
lint-staged とは
- Git でステージ上の(変更された)ファイルに対してスクリプトを実行するためのツール
開発環境
開発環境は以下の通りです。
- Windows 11
- Next.js 14.2.4
- React 18.3.1
- TypeScript 5.5.2
- Husky 9.1.5
- lint-staged 15.2.9
- ESLint 8.57.0
- Prettier 3.3.3
Husky と lint-staged のインストール
まずは Husky と lint-staged のインストールします。
npm install --save-dev husky lint-staged
Husky の初期化
Husky の初期化コマンドを実行します。
npx husky init
実行後、以下2点が追加されます。
-
"prepare": "husky"
スクリプトの追加 -
.husky
フォルダの追加
"prepare": "husky"
スクリプトの追加
package.json
の scripts
に "prepare": "husky"
が追加されます。
package.json
{
...,
"scripts": {
...,
"prepare": "husky"
},
...
}
prepare
は npm install
前に自動で実行されます。
.husky
フォルダの追加
.husky
フォルダ内には pre-commit
ファイルと _
フォルダが含まれています。pre-commit
の中身は以下の通りです。
npm
pre-commit
で lint-staged を実行するために中身を書き換えます。
npx lint-staged
lint-staged の設定
package.json
に "lint-staged"
を追加して、ESLint と Prettier を実行するスクリプトを記載します。
package.json
{
...,
"lint-staged": {
"src/**/*.{ts,tsx,json,css,scss}": [
"prettier --write",
"next lint --fix --dir src"
]
}
}
以上で設定完了です。