みかづきブログ・カスタム

基本的にはちょちょいのほいです。

SourceTreeからコミットを試みるとHuskyのpre-commitでエラーになる(husky - pre-commit hook exited with code 127) 😱

ことの発端

Huskyでpre-commitが設定してあるプロジェクトに対し、SourceTreeからコミットを行った際、

.husky/pre-commit: line 4: yarn: command not found
husky - pre-commit hook exited with code 127 (error)

というエラーが出てコミットできませんでした。

pre-commitを確認してみると、

yarn lint

という箇所があり、 yarn が見つからないことが原因のようです。

対策

Atlassianのコミュニティから解決法を見つけました。

community.atlassian.com

いくつか方法が書いてありますが、僕はターミナルからSourceTreeを起動することで解決しました。

つまり、

open /Applications/SourceTree.app/Contents/MacOS/SourceTree

で、SourceTreeを起動することによってyarnのパスを通しています。

ただし、毎回コマンドを打ち込むのも面倒なので、

source-tree.command

#!/bin/sh
open /Applications/SourceTree.app/Contents/MacOS/SourceTree

という形でバッチファイルを作成し、権限を与え、このファイルをダブルクリックすることでSourceTreeを起動することにしました。