clomie.dev

husky v5

husky が v5 にメジャーバージョンアップしたので、linjar の husky をアップデートした。

マイグレーション用のツールとして husky-4-to-5 が用意されている。"Requires npm 7" とあるが、npm 6 以前でも npx で特に何の問題もなく実行できた。

$ npx github:typicode/husky-4-to-5 --package-manager npm

実行すると husky v5 と pinst のインストールと、package.json の scripts セクション と husky v5 用のスクリプトファイルが自動構成された。設定ファイルは手直しが必要だった。

linjar の package.json には prepublishonly スクリプトが既に設定されていて、自動構成されなかったので手直しする必要があった。また、これまでの pre-commit フックは npm scripts のコンテキストで実行されていたが、husky v5 からはただのスクリプトになっている。

pinst は postinstall タスクを有効化・無効化するだけのモジュールだった。v5 以降で postinstall スクリプトが必要になったが、ライブラリパッケージの場合は package.json に設定があるとパッケージを使う側でも postinstall スクリプトが動いてしまう。これを回避するためのモジュールと理解した。

新しい husky はライブラリ依存がなくなって、作りもシンプルになっていた。 husky install コマンドを実行すると、git の core.hookspath 設定が husky 専用に作られたディレクトリに設定されて、専用の環境変数を扱うためのシェルスクリプトがコピーされる。あとはただ git hooks の機能で動くし、その時 husky が間で動くということもない。

% git config --get core.hookspath
.husky

マイグレーションしたコミットはこれ