语义化版本号规则
简介
格式如:X.Y.Z[-先行版本号][+版本编译元数据]
,其中 X
, Y
, Z
均为非负整数(自然数 0 ~ 无穷大),且禁止在数字前方补0。
X
主版本号Y
次版本号Z
修订号
规范
版本更新
- 每一项都必须以数值增加
- 任何对某一个版本的修改都必须发布到新的版本,禁止在制定好的版本内修改。
- 主版本号为0的,属于不稳定版本,各种事务都有可能变更。
版本归零
- 每当次版本号更新,修订号必须归零。
- 主版本号更新,次版本号和修订号都要归零。
先行版本号
指的是这个版本非稳定而且可能无法满足预期的兼容性需求。在修订号后先加上一个连接号再加上一连串以句点分隔的标识符来修饰。标识符类型只能是字母、数字,且不可以有空格。先行版的优先级低于相关联的标准版本。如: 1.0.0-alpha
、1.0.0-alpha.1
版本编译元数据
在有先行版本号则在先行版本号后,无先行版本号之后则在修订号后。先加上一个+
,再加上以句号分隔的标识符。标识符类型只能是字母、数字,且不可以有空格。版本编译元数据可被忽略,以前面的为主指定优先级。如:1.0.0-alpha+001
、1.0.0-beta+exp.sha.5114f85
版本优先级
- 主版本号、次版本号及修订号以数值比较,例如:
1.0.0
<2.0.0
<2.1.0
<2.1.1
。 - 当主版本号、次版本号及修订号都相同时,使用先行版本号决定,带现行版本号的优先级都低于正式版本。例如:
1.0.0-alpha
<1.0.0
有用的提示信息(FAQ)
-
主版本号为0时,怎么定义版本号?
以
0.1.0
作为你的初始化开发版本,并在后续的每次发行时递增 次版本号。 -
如何判断发布 1.0.0 版本的时机?
软件被用于正式环境,它应该已经达到了 1.0.0 版。如果你已经有个稳定的 API 被使用者依赖,也会是 1.0.0 版。
参考链接
[1] semver. github
[2] Gravatars 创办者兼 GitHub 共同创办者 Tom Preston-Werner 语义化版本2.0.0
感谢