環境
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "eslint src",
"lint:fix": "eslint src --fix",
"format": "prettier . --write",
"prepare": "husky install"
},
"dependencies": {
"next": "13.5.6",
"react": "^18",
"react-dom": "^18"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"@typescript-eslint/eslint-plugin": "^6.19.0",
"@typescript-eslint/parser": "^6.19.0",
"autoprefixer": "^10",
"eslint": "^8.56.0",
"eslint-config-next": "13.5.6",
"eslint-plugin-react": "^7.33.2",
"husky": "^8.0.3",
"lint-staged": "^15.2.0",
"postcss": "^8",
"prettier": "^3.2.4",
"react-hook-form": "^7.49.3",
"tailwindcss": "^3",
"typescript": "^5"
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --fix",
"prettier --write"
]
}
}
手順
インストール前にgit init
コマンドで初期化。
下記コマンドを実行してhusky
とlint-staged
をインストールしてください。
//npm
npm i -D husky lint-staged
//yarn
yarn add -D husky lint-staged
//bun
bun add -D husky lint-staged
次にGit hooks
のインストールを行うために下記のコマンドを実行してください。実行後に.husky
ディレクトリが自動作成されるはずです。
bunx husky install
次にpackage.json
のscriptsフィールドに下記の記述を追加します。
"prepare": "husky install"
次にlint-staged
の設定を行うためにpacage.json
内のdevDependenciesフィールドの下に下記の記述を追加してください。
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --fix",
"prettier --write"
]
}
そうなるとpackage.json
の記述は下記のようになります。
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "eslint src",
"lint:fix": "eslint src --fix",
"format": "prettier . --write",
"prepare": "husky install"
},
"dependencies": {
"next": "13.5.6",
"react": "^18",
"react-dom": "^18"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"@typescript-eslint/eslint-plugin": "^6.19.0",
"@typescript-eslint/parser": "^6.19.0",
"autoprefixer": "^10",
"eslint": "^8.56.0",
"eslint-config-next": "13.5.6",
"eslint-plugin-react": "^7.33.2",
"husky": "^8.0.3",
"lint-staged": "^15.2.0",
"postcss": "^8",
"prettier": "^3.2.4",
"react-hook-form": "^7.49.3",
"tailwindcss": "^3",
"typescript": "^5"
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --fix",
"prettier --write"
]
}
}
次に下記コマンドを実行してください。.husky
ディレクトリ内にpre-commit
ファイルが生成されるはずです。
//bun
bunx husky add .husky/pre-commit "lint-staged"
//npm
npx husky add .husky/pre-commit "lint-staged"
*この時点でプロジェクトはgithub等のリポジトリと連携してある前提の話です。
こちらでgitをコミットしてみてください。
コミット時にエラーが出た場合
下記のようなエラーが出た人のみみてください。
.husky/pre-commit: line 4: lint-staged: command not found
husky - pre-commit hook exited with code 127 (error)
husky - command not found in PATH=/Applicaton ~~~~~~パスがなんちゃら
解決策
pre-commit
ファイル内の記述に不足している場合が考えられます。lint-staged
の前にbunx
の記述が不足していて私もエラーが出ました。(なんで記述が漏れてファイル生成が行われたか有識者の方がいましたら共有いただけると幸いです。)
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
//bun
bunx lint-staged
//npm
npx lint-staged