VS Code x lint-staged でエラーが出る場合の解決策
VS Code などの GUI ツールから git コミットをする場合に環境によって lint-staged でエラーが出る場合があります。本記事ではその原因と解決策を紹介します。
問題
lint-staged を使ってコミット時に自動でフォーマットやリントを行っているが、VS Code の GUI からコミットするとエラーとなりコミットに失敗します。エラーメッセージは下記のようなものです。
/usr/bin/env: ‘bash\r’: No such file or directory
husky - pre-commit hook exited with code 127 (error)
ただし、コマンドラインからコミットすれば問題なくコミットできるし、lint-staged も動きます。
原因
VS Code の GUI からコミットする場合は non interactive shell で実行されているため、.bashrc
や.bash_profile
で設定した PATH が読み込まれません。
そのため、その PATH が必要なコマンドを lint-staged で実行している場合はコマンドが見つからないためエラーとなります。
今回の環境では nodejs を nvm で利用している環境で、その PATH は.bashrc
で設定していました。
一方で、lint-staged(Husky)では pre-commit コマンド内でnpx
コマンドを使っているため、node への PATH がない環境ではエラーとなっていたようです。
解決策
以下の内容のファイルを~/.huskyrc
に設置するだけです。
source ~/.bashrc
解決策の解説
lint-staged は pre-commit の実行を Husky に依存しています。
その Husky は~/.huskyrc
があれば事前にそれを実行してくれます。なので必要な処理をそこに書いていけば OK です。今回は PATH の設定ですが、~/.bashrc
を実行することでそれを行っています。
参考情報
Author And Source
この問題について(VS Code x lint-staged でエラーが出る場合の解決策), 我々は、より多くの情報をここで見つけました https://zenn.dev/riemonyamada/articles/7723062da1b019著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol