カスタムコミットタイプの使用

wip、hotfix、releaseなどのカスタムタイプでConventional Commitsを拡張する方法。カスタムタイプが適切なタイミングと設定方法を学びます。

Best Practices

詳細な説明

標準タイプの拡張

Conventional Commits仕様ではfeatfixのみが必須ですが、ほとんどのプロジェクトは11の標準タイプを持つAngularの規約を採用しています。一部のチームはさらに進んで、特定のワークフローに合わせたカスタムタイプを追加します。

一般的なカスタムタイプ

カスタムタイプ 目的 使用タイミング
wip 作業中 フィーチャーブランチ;マージ前にスカッシュ
hotfix 緊急本番修正 通常のリリース外でデプロイされる緊急パッチ
release リリース準備 バージョンバンプ、変更ログの更新
deps 依存関係の更新 chore(deps)の代替
security セキュリティパッチ CVE修正、脆弱性の修復
i18n 国際化 翻訳ファイル、ロケールサポート
a11y アクセシビリティ ARIAラベル、キーボードナビゲーション、コントラスト
ux ユーザーエクスペリエンス 機能ではないUI/UXの改善

リンターでのカスタムタイプの追加

Optionsパネルでカンマ区切りのカスタムタイプを入力します:

wip, hotfix, release, deps, security

これらはデフォルトリストに追加されます。リンターは標準またはカスタムタイプのいずれかを使用したコミットを受け入れます。

チームガイドライン

カスタムタイプを追加する場合、プロジェクトのCONTRIBUTING.mdまたはコミット規約ガイドに文書化してください:

## コミットタイプ

標準タイプ:feat, fix, docs, style, refactor, perf,
test, build, ci, chore, revert

カスタムタイプ:
- `wip`:作業中(マージ前にスカッシュ)
- `hotfix`:緊急本番修正
- `deps`:依存関係の更新

ツール設定

commitlintを使用している場合、commitlint.config.jsでカスタムタイプを設定します:

module.exports = {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'type-enum': [2, 'always', [
      'feat', 'fix', 'docs', 'style', 'refactor',
      'perf', 'test', 'build', 'ci', 'chore', 'revert',
      'wip', 'hotfix', 'deps'
    ]]
  }
};

カスタムタイプを避けるべきとき

  • 変更が標準タイプに適合する場合は、標準タイプを使用してください。
  • あまりにも特定のタイプは避けてください:button-style-fixfix(ui)の方が良いです。
  • 標準タイプと重複するタイプは避けてください:bugfixfixと重複します。

ユースケース

標準タイプに適合しない繰り返し発生するコミットパターンがある場合にカスタムコミットタイプを追加します。これは、hotfixブランチ、国際化スプリント、自動化された依存関係更新ボットなどの特定のワークフローを持つチームで一般的です。

試してみる — Conventional Commits Linter

フルツールを開く