Tower × husky でコミット時に lint-staged を実行する

公開日:

目次

husky と lint-staged を活用して、コミット時に自動で ESLInt や Prettier を走らせる事があるかと思います。有料の Git GUI クライアントである Tower からコミット時に husky で lint-staged を実行しようとしたらエラーが発生してしまいました。今回は、Tower で husky を実行できるようにする方法を紹介します。

結論

結論として解決方法は、Tower のドキュメントに詳しく説明されていました。

ドキュメントによると、~/Library/Application Support/com.fournova.Tower3/environment.plist というファイルを作成し、↓ のように node のパスを通します。自分は node を nodenv で管理しているため、nodenv のパスを通しています。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>PATH</key>
        <string>/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/Users/hoge/.nodenv/shims/node</string>
  </dict>
</plist>

現象

現象としては、husky 実行時に、Tower が node のパスを知らないことが原因で ↓ エラーが発生します。

.husky/pre-commit: line 4: npx: command not found
husky - pre-commit hook exited with code 127 (error)
husky - command not found in PATH=/Library/Developer/CommandLineTools/usr/libexec/git-core:/Applications/Tower.app/Contents/Resources/git-flow:/Applications/Tower.app/Contents/Resources/git-lfs:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

まとめ

Tower は有料のGit クライアントなので、ネット上に情報が少なくてとまどりました。ただ、公式ドキュメントで丁寧に説明されていたので助かりました。