[VSCode] husky で npm: command not found になる問題の解決方法
はじめに
こんにちは。kimizuy です。
今回はプロジェクトで husky
を使っている方に向けた備忘録です。
コミット前の検証に何かしらのコマンドを走らせようとしたときに npm: command not found
となる場合があります。
このエラーは VSCode に加えて Node.js のバージョンマネージャーである nvm
や volta
を組み合わせるとよく起こるエラーのようです。
対処法としては husky
が npm
や yarn
のパスを見失うので、コマンドの実行前にパスをロードする必要があります。
環境
- husky v8.0.1
- Next.js v12
- Mac Big Sur
tldr
nvm
と volta
でそれぞれご紹介します。Hook ファイル内で、コマンド(この場合は npm run test
)の実行前にパスをロードするスクリプトを記述します。
yarn
を使っている人は npm run
の部分を読み替えてください。
nvm
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
npm run test
volta
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
export VOLTA_HOME="$HOME/.volta"
export PATH="$VOLTA_HOME/bin:$PATH"
npm run test
以下のイシューにも書いてありますが、husky の v4 から v5 へのアップグレードや VSCode のアップグレードでもパスが通ったり通らなかったりで動きが変わるようです。
かなり環境に依る部分なので上記のコード例は一例として参考にしてください。
https://github.com/typicode/husky/issues/912#issue-840781354
参考
おわりに
この記事で VSCode を再起動する人が減ると幸いです。
以上、お読みいただきありがとうございました。
今すぐの転職でなくてもOKです!まずはお話しませんか?
現在弊社では一緒にお仕事をしてくださるエンジニアさんやデザイナーさんを積極募集しています。まずはカジュアルな面談で、お互いに大事にしていることをお話できたらうれしいです。詳しい応募要項は以下からチェックしてください。
- React, Next.js を得意とするフロントエンドエンジニア募集要項
- シニアクラスのフロントエンドエンジニア募集要項
- 抽象的な物事を具体的な機能にビジュアライズできるUIデザイナー募集要項
- 受託 Web プロダクトチームを作りたい!1人目の PdM 探しています!(Wantedly)
- UIデザイナーとして手ざわりのいいUIを作りたい業務委託パートナーさん募集(Wantedly)
パートナー契約へのお問い合わせもお仕事へのお問い合わせも、どちらもいつでも大歓迎です。まずはオンラインでの面談でお話しましょう。ぜひお気軽にお問い合わせください!
話をしてみたい!