语义化版本控制规范
语义化版本控制(Semantic Versioning - SemVer)是一种被广泛采用的版本号命名规范,用于明确软件版本之间的兼容性和变更程度。以下是其主要内容:
一、正式版本
正式版本采用 MAJOR.MINOR.PATCH
的三段式格式,例如 2.5.8
:
MAJOR
:主版本号,做了不兼容的 API 修改MINOR
:次版本号,做了向下兼容的功能性新增PATCH
:修订号,做了向下兼容的问题修正
二、预发布版本
在正式版本的基础上,还可以添加预发布版本信息,主要分以下三种:
alpha
: 早期测试,功能不完整beta
: 功能完整但可能有 bugrc
(release candidate): 候选发布版本
例如:
1.0.0-alpha.1
1.0.0-beta.2
1.0.0-rc.1
三、版本号递增规则
MAJOR
版本号递增的情况:- 移除或修改原有 API,导致不兼容变更
- 重大功能重构导致使用方式改变
- 重大架构变更,可能会影响到 API
MINOR
版本号递增的情况:- 新增向后兼容的功能
- 标记废弃功能(但不移除)
- 内部实现改进,不影响 API 使用
PATCH
版本号递增的情况:- 修复 bug,不引入新功能
- 重构代码但不影响 API
- 文档更新
四、规范细则
版本发布后,禁止修改该版本的内容,任何修改都必须以新版本发布
任何版本号都必须遵循
MAJOR.MINOR.PATCH
的格式,且不允许跳过任何数字部分0.y.z
,这样的版本号表示开发初期,正式发布前的版本1.0.0
版本,表示 API 已稳定,后续变更需遵循版本号递增规则预发布版本,可以在正式版本号后追加
-
和标识符,例如:1.0.0-alpha
、1.0.0-beta.1
、1.0.0-rc.2
构建元数据,可以在版本号或预发布标识后追加
+
和标识符,例如:1.0.0-alpha.1
、1.0.0-rc.108
示例
0.1.0
→0.2.0
(开发阶段新增功能)0.9.0
→1.0.0
(首个稳定版本)1.0.0
→1.0.1
(修复 bug)1.0.1
→1.1.0
(新增兼容功能)1.1.0
→2.0.0
(不兼容变更)
为什么使用 SemVer?
- 明确依赖关系 - 开发者可以明确知道版本更新是否会破坏现有功能
- 自动化工具支持 - 包管理器(npm, pip 等)可以智能处理依赖关系
- 清晰的变更沟通 - 通过版本号就能了解变更的性质和影响范围
大多数现代软件包管理系统(如 npm、Composer、NuGet 等)都内置支持语义化版本控制规范。
更新日志
2025/8/24 08:17
查看所有更新日志
e7112
-1于