Semantic Versioning(语义化版本控制)是一种版本控制规范,旨在帮助开发者清晰地表达软件版本之间的变化,并确保版本更新对用户的影响可预见和可管理。SemVer 的核心在于使用三段式版本号:MAJOR.MINOR.PATCH
。
版本号结构
-
MAJOR(主版本号)
- 变更:当你做了不兼容的 API 修改时。
- 示例:
2.0.0
,3.0.0
-
MINOR(次版本号)
- 变更:当你在不破坏向后兼容的情况下添加功能时。
- 示例:
1.1.0
,1.2.0
-
PATCH(修订号)
- 变更:当你做了向后兼容的问题修复时。
- 示例:
1.0.1
,1.0.2
版本号附加信息
- 预发布版本:用
-
后缀来标识预发布阶段版本,比如1.0.0-alpha.1
。 - 构建元数据:用
+
后缀来附加构建信息,比如1.0.0+20130313144700
。
遵循 SemVer 的好处
- 清晰的变化记录:通过主版本号、次版本号和修订号,开发者可以迅速了解软件的变化程度。
- 向后兼容性:明确声明了变更的兼容性,用户可以根据版本号来判断更新的影响。
- 可靠的版本管理:通过预发布和构建元数据,提供了更多版本管理的灵活性和信息。
版本更新
在升级版本时,常常使用一些符号来指定允许升级的范围,其中包括 ^ 和 ~ 等。
- ^ 表示向后兼容地升级版本号,只允许升级到次版本号或修订版本号,不允许升级到主版本号。
- ~ 表示只允许升级到修订版本号,不允许升级到次版本号或主版本号。
例如,对于版本号为 1.2.3:
- ^1.2.3 允许升级到 1.2.4、1.3.0 等修订号或次版号的版本,但不允许升级到 2.0.0。
- ~1.2.3 只允许升级到 1.2.4、1.2.5 等修订版本号的版本,但不允许升级到 1.3.0、2.0.0 等更高的版本。