破壊的変更のコミットメッセージ
破壊的変更のコミットメッセージの書き方を学びます。!表記、BREAKING CHANGEフッター、移行ガイダンス、破壊的変更がバージョニングに与える影響を解説します。
Breaking Changes
詳細な説明
Conventional Commitsでの破壊的変更
破壊的変更は、パブリックAPI、動作、またはインターフェースに互換性のない変更を導入します。Semantic Versioningでは、破壊的変更はそれが機能であれ修正であれ、majorバージョンバンプ(例:2.1.0から3.0.0)をトリガーします。
破壊的変更を示す2つの方法
1. ヘッダーのエクスクラメーションマーク
タイプ(およびスコープがある場合はその後)に!を追加:
feat!: remove support for Node.js 14
fix(api)!: rename /users endpoint to /accounts
2. BREAKING CHANGEフッター
詳細付きのBREAKING CHANGE:フッターを追加:
feat: redesign authentication API
BREAKING CHANGE: The login endpoint now returns a JWT token
instead of a session cookie. All clients must update their
authentication flow to use Bearer token headers.
3. 両方を併用(推奨)
両方を使うことで最大の可視性が得られます:
feat(auth)!: replace session-based auth with JWT
Migrate from express-session to jsonwebtoken for
stateless authentication. Sessions are no longer
stored on the server.
BREAKING CHANGE: The /auth/login endpoint now returns
{ token: string } instead of setting a session cookie.
Clients must include Authorization: Bearer <token>
header in all authenticated requests.
Migration guide: https://docs.example.com/auth-v3
破壊的変更に該当するもの
| 破壊的 | 非破壊的 |
|---|---|
| パブリックAPIエンドポイントの削除 | 新しいエンドポイントの追加 |
| 関数の戻り値の型の変更 | オプションパラメータの追加 |
| エクスポートされた関数のリネーム | 新しいエクスポートの追加 |
| デフォルト動作の変更 | 設定オプションの追加 |
| プラットフォームサポートの廃止 | プラットフォームサポートの追加 |
移行ガイダンス
ボディやフッターに明確な移行手順を常に含めてください。ユーザーに以下を伝えます:
- 何が変わったかとその理由
- 現在の使い方で何が壊れるか
- 具体的な手順やコード例を含む移行方法
- 利用可能な場合は完全な移行ガイドへのリンク
ユースケース
認証メカニズムをセッションクッキーからJWTトークンに変更するライブラリのメジャーバージョンをリリースしています。APIのすべてのコンシューマーが統合を更新する必要があります。破壊的変更として明確に示し、移行手順を含み、自動リリースパイプラインで正しいmajorバージョンバンプをトリガーするコミットメッセージが必要です。