VSCode で Git 操作中に発生する lint-staged のエラーとその解決方法
prettier などのリントツールと husky + lint-staged を組み合わせることで git commit するタイミングで、 自動的に lint とコード整形を実現できます。
細かい設定は、以下のようなブログに任せます。
- Getting started - husky
 - 【2023/09最新】husky + lint-staged でコミット前にlintを強制する方法 - zenn
 - husky+lint-stagedでコミット時に自動でlintを動かす - ajike
 
husky のインストールが完了した状態で、以下のコマンドが実行すると
$ npx husky add .husky/pre-commit "npx lint-staged".husky/pre-commit が作成されます。これで、コミットのタイミングで自動的に npx lint-staged を実行できます。
#!/usr/bin/env sh. "$(dirname -- "$0")/_/husky.sh"
npx lint-staged --allow-emptyしかし、Node.js を rtx を使ってバージョン管理している場合、VS Code からコードのコミットを実行するとエラーになり husky がうまく動作しません。
今回はそのエラーを解消します。
| バージョン | |
|---|---|
| Mac | Ventura 13.2.1 | 
| husky | 8.0.3 | 
| lint-staged | 13.1.2 | 
コミット ボタンを押すと

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

冒頭でも表示したように .husky/pre-commit は以下の通りです。
#!/usr/bin/env sh. "$(dirname -- "$0")/_/husky.sh"
npx lint-staged --allow-emptycommand -v のコマンドを追記することで、解消します。
#!/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