【コミットリント】

commitlint とは?

最終更新:
💡 設定した規約で、コミットメッセージを点検する

Gitのコミットメッセージを設定したルールで検査するツール。共有設定を使ってConventional Commitsなどの形式を確認できる。コミットを止めるにはGitフックなどへの組み込みが必要で、コードの品質や変更内容の正しさを保証するものではない。

📌 このページのポイント
メッセージを、設定した規約で検査メッセージcommitlint選んだ設定で検査Conventional Commitsの設定例適合する例エラーとなる例feat: add loginfix(api): retry修正したtypeがないエラー終了をフックへ組み込むリリースや履歴生成は別ツール
Conventional Commits用の設定例。合否は適用ルールに依存し、commit-msgフックなどへ組み込んだ場合にエラー終了でコミットを止める。コードの正しさの検査とは分ける。
ひよこ ひよこ
commitlintって何をチェックするの?
ペンギン先生 ペンギン先生
メッセージが設定した形式に合うかを見るよ。Conventional Commitsの例ならfeat: add loginやfix(api): handle errorsのような型・対象・説明を扱う。コードが正しく動くか、メッセージが実際の変更を正確に説明しているかまで保証する検査ではないんだ。
ひよこ ひよこ
ルールに合わないとコミットできないの?
ペンギン先生 ペンギン先生
commit-msgフックで実行し、エラー終了した結果を使えばコミットを止められるよ。ツールを入れただけで全コミットが自動的に止まるわけではない。警告とエラーは設定で違い、ローカルのフックを迂回できる場合もあるのでCIでも確認するんだ。
ひよこ ひよこ
どうやって設定するの?
ペンギン先生 ペンギン先生
CLIと、たとえば@commitlint/config-conventionalを導入し、設定ファイルのextendsで選ぶよ。Huskyなどでcommit-msgフックからメッセージのファイルを渡して実行する。設定の書き方やモジュール形式、フックの手順は使う版の公式ガイドを確認するんだ。
ひよこ ひよこ
独自のルールも作れる?
ペンギン先生 ペンギン先生
できるよ。たとえばscope-enumで対象名を限定し、scope-emptyの設定で省略も禁止する。許可する対象名だけを設定しても、空欄を必ず拒否するとは限らないんだ。長さやエラー・警告の扱いも選べるので、チームの規約へ合わせるよ。
ひよこ ひよこ
バージョンやCHANGELOGも自動で作るの?
ペンギン先生 ペンギン先生
commitlint自身はメッセージの検査を担当する。別のリリース用ツールがメッセージを読めば、履歴やバージョンの自動化に使えるよ。Conventional Commitsではfeatがminor、fixがpatch、破壊的変更がmajorに対応するが、実際の公開は別ツールの設定や手順によるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「commitlint」って出てきたら「設定したコミットメッセージの規約を検査するツール」と思えばだいたいOK!
📖 おまけ:英語の意味
「commitlint」 = コミットメッセージのリンター
💬 commitとlintを合わせた名前。変更履歴のメッセージをルールで点検するツールだよ。

参考資料

← 用語集にもどる