LoginSignup
34
15

コミットメッセージのスタイルを統一する

Last updated at Posted at 2023-12-02

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> は,fixfeat などのコミット内容の種類が一言で表されています.
  • <description> は,変更内容の短い要約が入ります.

Commitizen の導入

Commitizen は,Conventional Commits 規約でコミットメッセージを作成するためのコマンドラインユーティリティです.

導入方法としては,以下のようになります.

  • Commitizen をインストールします.
npm install commitizen -g
# 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 内のパスを変更します.
package.json
...
"config": {
  "commitizen": {
    "path": "node_modules/cz-customizable"
  }
}

実際に使ってみた

CLI で動かすと以下のようになります.

コミットメッセージが <type>: <description> の形になっていることが確認できました.

おまけ:git-cz について

git-cz という,Commitizen ツールのラッパーもあります.大きな違いとしては,インストール後の初期化コマンドを実行する必要がなくなることです.

導入方法もほとんど同じで,以下のようになります.

  • git-cz をインストールします.
npm install -g git-cz
  • git commit の代わりに git-cz を使用します.
git cz

まとめ

コミットメッセージの規約 Conventional Commits と,その規約に則ったメッセージ生成ツール Commitizen の紹介をしました.プロジェクトに合わせてコミットメッセージを適切に保ち,円滑な開発を目指しましょう!

34
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
15