概要
ローカル環境で Git hooks の操作をする際に非常に便利な Husky なんですが、ある日 Husky を導入しているリポジトリで GitHub Actions を動かすと、なぜか Actions 上でも Husky が動いていることがわかりました。
こちらの37行目以降が該当のログです。husky install
が実行されていることがわかります。
これといって困っているわけではないですが、CI上では Husky を動かす必要がないので止められるなら止めたい、というのが今日の話です。
原因
Husky のインストール時に package.json の prepare
に husky install
が自動で追加されます。そのため、npm のライフサイクルに入ってしまって、CI上での npm install (ここでは yarn install)時に動いてしまうようです。
"scripts": {
"prepare": "husky install"
}
対応方法
公式に書いてありましたが、HUSKY
という環境変数に 0 をセットしておけばインストールは動かないそうです。ということでこれをやってみます。
You can set
HUSKY
environment variable to0
in your CI config file, to disable hooks installation.
環境変数を追加
私の場合は、GitHub Actions の設定ファイルに以下のように環境変数を追加しました。
- name: Install dependencies
run: yarn install --frozen-lockfile
shell: bash
+ env:
+ # CI上では husky を動かさないようにする
+ # https://typicode.github.io/husky/guide.html#with-env-variables
+ HUSKY: '0'
確認
husky - HUSKY env variable is set to 0, skipping install
の文言が表示され、無事意図通りインストールがスキップされました。
感想
そもそも GitHub Actions 上で husky install が動いていたことに気づいていない(私みたいな)、あるいは大勢に影響ないので大して気にしていない、という場合も往々にしてありそうです。
気になった方は参考にしてみてください。