HRBrain Advent Calendar 2023 12/3 の記事です.
はじめに
開発をする際に,コミットメッセージを書くことが常だと思いますが,どのようなメッセージの書き方が適切か迷ったことがありませんか?
わかりやすく書かれているコミットメッセージで以下のようなメリットがあります.
- 共同開発者(または未来の自分)に作業内容が伝わる
- 変更履歴が追いやすくなる・コントリビュートしやすくなる
- 自動化ツールが作成しやすくなる(changelog 生成など)
この記事では,コミットメッセージの書き方の規約の一つである Conventional Commits と,コミットメッセージを作成する際に使用できるコマンドラインツール Commitizen を紹介します.
コミットメッセージの規約
Conventional Commits 規約では,通常のコミットメッセージに軽量な枠組みを追加したものになります.
The Conventional Commits specification is a lightweight convention on top of commit messages.
構造としては以下のようになります.
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
-
<type>
は,fix
,feat
などのコミット内容の種類が一言で表されています.-
commitlint というリンターでは,
build
,chore
,ci
,docs
,style
,refactor
,pref
,test
なども推奨されています.(参考:@commitlint/config-conventional)
-
commitlint というリンターでは,
-
<description>
は,変更内容の短い要約が入ります.
Commitizen の導入
Commitizen は,Conventional Commits 規約でコミットメッセージを作成するためのコマンドラインユーティリティです.
導入方法としては,以下のようになります.
- Commitizen をインストールします.
npm install commitizen -g
- プロジェクトを Commitizen フレンドリー にします.
-
config.commitizen
がpackage.json
に追記されます.
-
# npm
commitizen init cz-conventional-changelog --save-dev --save-exact
# yarn
commitizen init cz-conventional-changelog --yarn --dev --exact
-
git commit
の代わりに Commitizen を使用します.- 対話型でコミットメッセージを作成していきます.
git cz
Commitizen のカスタマイズ
Commitizen で cz-customizable プラグインを追加することによって,独自のルールを定義し自由にカスタマイズすることができます.
Commitizen がすでにインストールされている前提で,導入方法としては,以下のようになります.
- cz-customizable プラグインをインストールします.
npm install cz-customizable -g
-
package.json
内のパスを変更します.
...
"config": {
"commitizen": {
"path": "node_modules/cz-customizable"
}
}
- リポジトリ内に
.cz-config.js
を作成し,自由にカスタマイズします.
実際に使ってみた
コミットメッセージが <type>: <description>
の形になっていることが確認できました.
おまけ:git-cz について
git-cz という,Commitizen ツールのラッパーもあります.大きな違いとしては,インストール後の初期化コマンドを実行する必要がなくなることです.
導入方法もほとんど同じで,以下のようになります.
- git-cz をインストールします.
npm install -g git-cz
-
git commit
の代わりに git-cz を使用します.
git cz
まとめ
コミットメッセージの規約 Conventional Commits と,その規約に則ったメッセージ生成ツール Commitizen の紹介をしました.プロジェクトに合わせてコミットメッセージを適切に保ち,円滑な開発を目指しましょう!