🍣
git-czを導入して、Prefixに迷わずにコミットメッセージを書く
以前書いた記事でCommitlintを導入して、git commit
時にコミットメッセージに対する書式のチェックを行うようにしました。
しかし、Commitlintのprefixはデフォルトで11個もあり、コミットメッセージを打つ度にどれを使おうか考えてしまうため、git-czを導入してコミット時に対話形式でPrefixを選択出来るようにします。
Prefixとは、Gitのコミットメッセージの先頭に付けるfix
feat
test
などのことです。
まずは、git-czをインストールします。
❯ yarn global add git-cz
yarn global v1.22.11
warning package.json: No license field
[1/4] 🔍 Resolving packages...
[2/4] 🚚 Fetching packages...
[3/4] 🔗 Linking dependencies...
warning " > ts-node@10.2.1" has unmet peer dependency "@types/node@*".
warning " > ts-node@10.2.1" has unmet peer dependency "typescript@>=2.7".
[4/4] 🔨 Building fresh packages...
success Installed "git-cz@4.8.0" with binaries:
- git-cz
- gitcz
✨ Done in 2.90s.
設定ファイルを作成します。
❯ touch ~/changelog.config.js
こちらのドキュメントにある内容をコピペして、自分用に変更します。
~/changelog.config.js
module.exports = {
disableEmoji: false,
format: "{type}: {subject}",
list: [
"fix",
"feat",
"refactor",
"test",
"style",
"chore",
"docs",
"perf",
"ci",
],
maxMessageLength: 64,
minMessageLength: 3,
questions: ["type", "subject"],
scopes: [],
types: {
chore: {
description: "ドキュメントの生成やビルドプロセス、ライブラリなどの変更",
value: "chore",
},
ci: {
description: "CI用の設定やスクリプトに関する変更",
value: "ci",
},
docs: {
description: "ドキュメントのみの変更",
value: "docs",
},
feat: {
description: "新機能",
value: "feat",
},
fix: {
description: "不具合の修正",
value: "fix",
},
perf: {
description: "パフォーマンス改善を行うためのコードの変更",
value: "perf",
},
refactor: {
description: "バグ修正や機能の追加を行わないコードの変更",
value: "refactor",
},
style: {
description: "コードの処理に影響しない変更(スペースや書式設定など)",
value: "style",
},
test: {
description: "テストコードの変更",
value: "test",
},
},
};
そしてGit管理しているプロジェクトのフォルダに移動して、何らかのファイルを編集してgit add
した後にgit commit
のタイミングでgit cz
を実行します。
❯ git cz
? Select the type of change that you're committing:
fix: 不具合の修正
feat: 新機能
refactor: バグ修正や機能の追加を行わないコードの変更
❯ test: テストコードの変更
style: コードの処理に影響しない変更(スペースや書式設定など)
chore: ドキュメントの生成やビルドプロセス、ライブラリなどの変更
docs: ドキュメントのみの変更
(Move up and down to reveal more choices)
? Write a short, imperative mood description of the change:
[-------------------------------------------------------------] 36 chars left
chore: eslintとprettierの導入
ログを見てみます。
❯ git log --oneline
e24c2e6 (HEAD -> main) chore: eslintとprettierの導入
問題なく機能しました。
参考
Discussion