環境
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
~/.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
に設定するようにしました。