Vapor Trail

明るく楽しく元気よく

JetBrainsのIDEでhuskyが動かない

環境

Ubuntu 20.04
Node.js v14.7.0
npm v6.14.8
nvm v0.35.3

package.json
{
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web",
    "eject": "expo eject",
    "type-check": "tsc --pretty --noEmit",
    "lint": "eslint **/*.{ts,tsx}",
    "format": "prettier --write **/*.{ts,tsx} "
  },
  "dependencies": {
    "expo": "~39.0.2",
    "expo-status-bar": "~1.0.2",
    "react": "16.13.1",
    "react-dom": "16.13.1",
    "react-native": "https://github.com/expo/react-native/archive/sdk-39.0.4.tar.gz",
    "react-native-web": "~0.13.12"
  },
  "devDependencies": {
    "@babel/core": "~7.9.0",
    "@types/react": "~16.9.35",
    "@types/react-dom": "~16.9.8",
    "@types/react-native": "~0.63.2",
    "@typescript-eslint/eslint-plugin": "^4.5.0",
    "@typescript-eslint/parser": "^4.5.0",
    "eslint": "^7.12.0",
    "eslint-plugin-prettier": "^3.1.4",
    "eslint-plugin-react": "^7.21.5",
    "eslint-plugin-react-hooks": "^4.2.0",
    "husky": "^4.3.0",
    "lint-staged": "^10.4.2",
    "prettier": "^2.1.2",
    "typescript": "~3.9.5"
  },
  "private": true,
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.@(ts|tsx)": [
      "lint",
      "format"
    ]
  }
}

エラーがあるのにコミットできてしまう

治安を守るためにlint-staged+huskyを入れてeslintのエラーがある場合はコミットできないように設定をしたが、試しにエラーが出るようにファイルを編集してコミットしてみても普通にコミットできてしまう。

しかもVSCodeではコミットできないがPhpStormでは普通にコミットできてしまう。

gitのコンソールを見るとnpxのパスが見つからないということらしい。

Can't find npx in PATH: /usr/lib/git-core:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Skipping pre-commit hook

github.com

~/.huskyrcを作成して設定したらPhpStormでも動作するようになった。

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

huskyのシェルでnvmの設定が読み込めてなかっただけらしい。

そもそも.zshrc環境変数を設定をしていたことが間違いで、husky.shでもnvmのPATHが読み込めるように./husky.rcも削除して素直にきちんと~./profileに設定するようにしました。