チェンジログのセマンティックバージョニング
Conventional Commitsとセマンティックバージョニングを組み合わせて、各リリースの正しいバージョン番号を決定する方法を理解します。
Versioning
詳細な説明
Conventional CommitsとSemantic Versioningの連携
Semantic Versioning(SemVer)は3部構成のバージョン番号を使用します:MAJOR.MINOR.PATCH。Conventional Commitsはコミットタイプからバージョンインクリメントへの直接的なマッピングを提供します。
マッピングルール
| 条件 | バージョンバンプ | 例 |
|---|---|---|
!またはBREAKING CHANGEを持つコミット |
MAJOR | 1.2.3 → 2.0.0 |
featコミット(破壊的変更なし) |
MINOR | 1.2.3 → 1.3.0 |
fix、docs、chore等のみ(featなし、破壊的変更なし) |
PATCH | 1.2.3 → 1.2.4 |
バージョンの決定
ジェネレーターにバージョンを入力する前に、コミットをスキャンします:
- 破壊的変更はありますか? → MAJORをインクリメント、MINORとPATCHを0にリセット。
featコミットはありますか? → MINORをインクリメント、PATCHを0にリセット。- それ以外 → PATCHをインクリメント。
コミットセットの例
feat(auth): add OAuth2 login
fix(ui): correct sidebar z-index
docs: update README
このセットにはfeatが含まれていますが破壊的変更はないため、バージョンはMINORバンプとなります。前回のリリースが1.2.3だった場合、新しいバージョンは1.3.0です。
プレリリースバージョン
SemVerは2.0.0-beta.1や1.3.0-rc.1のようなプレリリース識別子をサポートしています。ジェネレーターは任意のバージョン文字列を受け入れるため、プレリリースバージョンをバージョン入力フィールドに直接入力できます。
契約としてのチェンジログ
チェンジログがSemVerでバージョニングされると、ユーザーとの契約になります。バージョン番号はアップグレードのリスクレベル(patch=安全、minor=新機能だが後方互換、major=破壊的変更)を伝え、チェンジログの詳細が何が変更されたかを説明します。
ユースケース
セマンティックバージョニングに従うすべてのプロジェクトの基本です。Conventional CommitsとSemVerの組み合わせにより、自動バージョン決定が可能になり、消費者に明確なアップグレード期待を提供します。