Skip to content

VSCode で Git 操作中に発生する lint-staged のエラーとその解決方法

はじめに

prettier などのリントツールと husky + lint-staged を組み合わせることで git commit するタイミングで、 自動的に lint とコード整形を実現できます。

細かい設定は、以下のようなブログに任せます。

husky のインストールが完了した状態で、以下のコマンドが実行すると

Terminal window
$ npx husky add .husky/pre-commit "npx lint-staged"

.husky/pre-commit が作成されます。これで、コミットのタイミングで自動的に npx lint-staged を実行できます。

.husky/pre-commit
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npx lint-staged --allow-empty

しかし、Node.js を rtx を使ってバージョン管理している場合、VS Code からコードのコミットを実行するとエラーになり husky がうまく動作しません。

今回はそのエラーを解消します。

環境

バージョン
MacVentura 13.2.1
husky8.0.3
lint-staged13.1.2

事象

コミット ボタンを押すと vscode-commit

以下のような Git: .husky/pre-commit: line 4: npx: command not found という文字列が出ます。 npx-command-not-found

冒頭でも表示したように .husky/pre-commit は以下の通りです。

.husky/pre-commit
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npx lint-staged --allow-empty

解決策

command -v のコマンドを追記することで、解消します。

.husky/pre-commit
#!/usr/bin/env sh
command -v rtx > /dev/null && export PATH=$(dirname $(rtx which node)):$PATH
. "$(dirname -- "$0")/_/husky.sh"
npx lint-staged --allow-empty