🐶

Huskyを導入した話

2024/08/23に公開

NestProjectにHuskyを入れた話

備忘録

入れた経緯

自分含め他メンバーとのコードの品質を制御・管理した方が良いと思ったため

前提条件

ESLintとPrettierは別途タイミングで導入済み

導入方法

terminal
$ npm i -D husky
$ npm i -D lint-staged
terminal
$ npx husky init

package.json
"scripts": {
  "prepare": "husky"
}

が追加される。

package.jsonのscripts下部に追記

package.json
},
  "lint-staged": {
    "*.{js,jsx,ts,tsx}": [
      "eslint --fix",
      "prettier --write"
    ]
  },

エラー問題

  • Dockerによる永続化のデータとして、mysql_dataがあり、ESLintがこれに反応しエラーを出していたためignoreにて対応。
.eslintignore
mysql_data
  • .husky/pre-commitの内容がnpmまでしか記載がなく、huskyの実行エラーになる問題。
pre-commit
- npm
+ npm run <command>
// もしくは
+ npx lint-staged

.husky/pre-commit

pre-commit
npx lint-staged

package.jsonのscriptsセクションに

package.json
"script": {
  "lint-staged": "lint-staged",
},

と書けば、npm run lint-stagedでも構わない。

.husky/pre-push

pre-push
npx lint-staged

package.json

lint-stagedセクションを追加する。

package.json
"script": {
  "start": "node index.js",
  "test": "jest",
},
"lint-staged": {
  "*.{js,jsx,ts,tsx}": [
      "eslint --fix",
      "prettier --write"
  ]
},

Discussion