【ハスキー】

Husky とは?

💡 コミットの前に「ワン!」と吠えてコードを守る番犬ツール
📌 このページのポイント
Husky:Node.jsプロジェクトのGitフック管理 npm install prepare スクリプト Husky Gitフックを自動設定 .husky/ フックスクリプト格納 git commit 実行時のフロー git commit 開発者 pre-commit フック発火 lint-staged 変更ファイルのみ ESLint Prettier commit-msg フック発火 commitlint メッセージ検証
Huskyのイメージ
ひよこ ひよこ

Huskyってどんなツールなの?犬の名前みたいだけど…

ペンギン先生 ペンギン先生

そのとおり、ハスキー犬が由来だよ。Node.jsプロジェクトで「Gitフック」を簡単に設定できるツールなんだ。コミットする前にコードチェックを自動で走らせる「番犬」みたいな役割だね

ひよこ ひよこ

Gitフックって何なの?

ペンギン先生 ペンギン先生

Gitにはコミットやプッシュなどのタイミングでスクリプトを実行できる仕組みがあるんだ。これがGitフックだよ。Huskyはこのフックの設定をpackage.jsonと一緒に管理できるから、チーム全員に同じルールを適用できるんだ

ひよこ ひよこ

設定は簡単なの?

ペンギン先生 ペンギン先生

とても簡単だよ。`npx husky init`を実行すると`.husky/`フォルダが作られて、そこにフックのスクリプトを置くだけ。たとえば`.husky/pre-commit`に`npx lint-staged`と書いておけば、コミット前にリンターが走るんだ

ひよこ ひよこ

lint-stagedって何?セットで使うものなの?

ペンギン先生 ペンギン先生

lint-stagedは「ステージングされたファイルだけ」にリンターを実行するツールだよ。Huskyでコミット前にlint-stagedを呼び出し、lint-stagedがESLintPrettierを実行する、という連携が定番パターンだね

ひよこ ひよこ

pre-commitっていうツールもあるみたいだけど、何が違うの?

ペンギン先生 ペンギン先生

いい質問だね。pre-commitPython製で言語を問わず使えるフレームワーク、HuskyはNode.jsエコシステムに特化したツールだよ。JavaScriptTypeScriptのプロジェクトならHusky + lint-stagedの組み合わせがデファクトスタンダードだね。ちなみにHuskyはv4からv9で設定方法が大きく変わっていて、古い記事の情報が使えないことがあるから、必ず公式ドキュメントを見るのがおすすめだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Husky」って出てきたら「Node.jsプロジェクトのGitフック管理ツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Husky」 = ハスキー犬
💬 シベリアンハスキーが由来で、「忠実にリポジトリを守る番犬」というイメージでつけられた名前だよ
← 用語集にもどる