0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Next.jsにhuskyとlint-stagedの導入とコミットの時のエラー回避

Posted at

環境

"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コマンドで初期化。

下記コマンドを実行してhuskylint-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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?