Skip to content
Latchkey

pre-commit vs Husky: どちらのHookマネージャ?

pre-commitは、固定された再利用可能なhooksの大きなレジストリを持つPythonフレームワークです。Huskyは、JSプロジェクトで人気のNodeネイティブなgit hooksマネージャです。

pre-commitは隔離されたhook環境を管理し、バージョンで固定されたコミュニティhooksの大きなカタログから取り込むため、多言語リポジトリや一貫性のある再現可能なチェックに強みがあります。HuskyはJavaScriptエコシステムのデフォルトで、最小限のセットアップでgit hooksを配線し、lint-stagedやnpm scriptsと自然に組み合わせられます。pre-commitは言語非依存でレジストリ駆動、HuskyはJSネイティブで軽量です。

pre-commitHusky
ランタイムPythonNode
言語任意JS中心
hookの出所共有レジストリ、固定自分のスクリプト
環境の隔離hookごとなし
最適な用途多言語、再現可能Nodeプロジェクト

CIでの利用

pre-commitは、多言語リポジトリや、プロジェクト間で標準化されたhooksの再利用に非常に適しており、組み込みのCIモードを備えています。Huskyはすでにnpmとlint-stagedを使っているJS/TSリポジトリに向いています。どちらもローカルで実行されるため、各開発者の設定に関係なく強制されるよう、チェックをCIジョブでミラーリングしましょう。

高速化する

hook環境(pre-commit)またはnode_modules(Husky)をキャッシュして、CIのチェックがウォームな状態で始まるようにします。チェックはランナー上で実行され、より高速なマネージドランナーはlintとテストの実行を短縮します。

結論

再利用可能でバージョン固定されたコミュニティhooksが欲しい多言語リポジトリ: pre-commit。軽量でエコシステムネイティブな選択肢が欲しいJavaScriptプロジェクト: Husky。言語構成で選び - 多くの言語にはpre-commit、JSファーストにはHusky - チェックはCIでも強制しましょう。

関連ガイド