ビルドメタデータ (+) は優先順位で無視される
1.0.0+20230101や1.0.0+build.42のようなSemVerビルドメタデータはバージョン比較時に無視されます。その理由と使い時を解説。
Pre-release
詳細な説明
SemVerにおけるビルドメタデータ
ビルドメタデータは、+記号の後にドット区切りの識別子を付けてバージョンに追加されます。
フォーマット
MAJOR.MINOR.PATCH[-prerelease][+build]
例:
1.0.0+20230101— ビルド日1.0.0+build.42— ビルド番号1.0.0-beta.1+exp.sha.5114f85— Git SHA付きプレリリース
黄金ルール
ビルドメタデータはバージョン優先順位の決定時に無視されなければなりません。
つまり:
1.0.0+build.1=1.0.0+build.2(比較目的)1.0.0+build.1=1.0.0(比較目的)
ビルドメタデータが存在する理由
ビルドメタデータは情報提供目的のみで存在します:
| ユースケース | 例 |
|---|---|
| Gitコミット SHA | 1.0.0+sha.a1b2c3d |
| ビルド日時 | 1.0.0+20230615.143022 |
| CIビルド番号 | 1.0.0+build.1234 |
| プラットフォーム | 1.0.0+linux.amd64 |
実際の使用
ほとんどのパッケージマネージャー(npm、Cargo、pub)は解決時にビルドメタデータを除去または無視します。主に内部追跡やデプロイアーティファクトのデバッグに有用です。
ユースケース
CI/CDパイプラインで追加メタデータ(Git SHA、ビルド番号、日付)をタグ付けしつつ、パッケージ解決のための正しいバージョン順序を維持する場合。