問題
huskyのpre-commitフックを設定したが、コマンドラインで git commit
した時は動くのに、SourceTreeでコミットする時はフックされてない、という事象に遭遇した。
エラーログ
SourceTreeの設定を「すべてのコンソール出力を常に表示する」に変えて、コミットした時のログを確認してみると...
Can't find npx in PATH: /Applications/Sourcetree.app/Contents/Resources/git_local/libexec/git-core:/Applications/Sourcetree.app/Contents/Resources/bin:/Applications/Sourcetree.app/Contents/Resources/git_local/bin:/Applications/Sourcetree.app/Contents/Resources/git_local/gitflow:/Applications/Sourcetree.app/Contents/Resources/git_local/git-lfs:/usr/bin:/bin:/usr/sbin:/sbin Skipping pre-commit hook
対処
https://github.com/typicode/husky/issues/639#issuecomment-573281096
npxの場所にPATHを通せば良いっぽい。
the file must be created in your home folder (~/.huskyrc) not at your project root.
.huskyrc
はprojectのrootではなく、 ~/
に置く点に注意。
というわけで
私のエラーログの場合
Can't find npx in PATH
とのことなので
$ which npx
/Users/miyuki/.nodebrew/current/bin/npx
ここにあるようなので
~/.huskyrc
には
PATH="/Users/miyuki/.nodebrew/current/bin:$PATH"
と記述して、解決した