【コミットリント】

commitlint とは?

公開:
💡 コミットメッセージの「校閲係」がチーム全体の履歴をきれいに保つ
📌 このページのポイント
commitlint:コミットメッセージの自動チェック Conventional Commits 形式 type(scope): description 例: feat(auth): ログイン機能を追加 / fix(api): レスポンスのエラー処理を修正 OK(ルールに適合) feat: ユーザー登録機能を追加 fix(api): 認証エラーのハンドリング修正 NG(コミット拒否) 修正した ← typeがない Fix bug ← 大文字NG 統一されたメッセージで自動化が可能に feat: → minor fix: → patch BREAKING → major CHANGELOG生成
commitlintのイメージ
ひよこ ひよこ
commitlintってコミットメッセージをチェックするの?メッセージに決まりなんてあるの?
ペンギン先生 ペンギン先生
あるんだよ。たとえば「feat: ログイン機能を追加」「fix: パスワードリセットのバグ修正」みたいに、先頭にカテゴリをつける「Conventional Commits」という書き方のルールがあるんだ。commitlintはこのルールに沿っているかを自動チェックしてくれるよ
ひよこ ひよこ
ルールに合わないとどうなるの?
ペンギン先生 ペンギン先生
コミットが拒否されるんだ。たとえば「修正した」みたいにカテゴリなしで書くと「type may not be empty(タイプが空です)」とエラーが出る。最初は面倒に感じるけど、慣れると履歴がとても見やすくなるよ
ひよこ ひよこ
どうやって設定するの?
ペンギン先生 ペンギン先生
まず`@commitlint/config-conventional`という設定パッケージをインストールして、`commitlint.config.js`に設定を書く。そしてHuskyの`commit-msg`フックでcommitlintを呼び出すように設定するんだ。これでコミットのたびに自動チェックが走るよ
ひよこ ひよこ
コミットメッセージを統一すると何がいいの?
ペンギン先生 ペンギン先生
最大のメリットは自動化だよ。「feat:」があればマイナーバージョンアップ、「fix:」があればパッチバージョンアップ、みたいにsemantic-releaseと組み合わせてバージョニングを完全自動化できるんだ。CHANGELOGの自動生成もできるよ
ひよこ ひよこ
独自のルールを作ったりもできるの?
ペンギン先生 ペンギン先生
もちろん!commitlint.config.jsでルールをカスタマイズできるよ。たとえば「scopeにはフロントエンド・バックエンドのどちらかを必ず書く」とか「件名は50文字以内」みたいな独自ルールも設定できる。Angularプロジェクトが発祥のConventional Commitsだけど、今ではOSSから企業まで幅広く使われている事実上の標準だね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「commitlint」って出てきたら「コミットメッセージのルールを自動チェックするツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「commitlint」 = コミットのリンター
💬 commit(Gitコミット)+ lint(コードの静的チェック)を組み合わせた名前で、「コミットメッセージにリンターをかける」という意味だよ
← 用語集にもどる