本文根据 Devhints / Semver 翻译。代码示例及版本范围沿用原文。原文标注更新日期:2019-12-31。
Semver
给定版本号 MAJOR.MINOR.PATCH:
MAJOR | 不兼容的 API 变更 |
MINOR | 新增功能(向后兼容) |
PATCH | 错误修复(向后兼容) |
简单范围
1.2.3
=1.2.3
>1.2.3
<1.2.3
>=1.2.3
注意:带有后缀的版本(1.2.3-rc1)不参与匹配。
范围
| 范围 | 说明 | 说明 |
|---|---|---|
~1.2.3 | 是 >=1.2.3 <1.3.0 | |
^1.2.3 | 是 >=1.2.3 <2.0.0 | |
^0.2.3 | 是 >=0.2.3 <0.3.0 | (0.x.x 具有特殊含义) |
^0.0.1 | 是 =0.0.1 | (0.0.x 具有特殊含义) |
^1.2 | 是 >=1.2.0 <2.0.0 | (类似于 ^1.2.0) |
~1.2 | 是 >=1.2.0 <1.3.0 | (类似于 ~1.2.0) |
^1 | 是 >=1.0.0 <2.0.0 | |
~1 | 相同 | |
1.x | 相同 | |
1.* | 相同 | |
1 | 相同 | |
* | 任意版本 | |
x | 相同 |
连字符范围
| 范围 | 说明 |
|---|---|
1.2.3 - 2.3.4 | 是 >=1.2.3 <=2.3.4 |
右侧部分指定
| 范围 | 说明 |
|---|---|
1.2.3 - 2.3 | 是 >=1.2.3 <2.4.0 |
1.2.3 - 2 | 是 >=1.2.3 <3.0.0 |
左侧部分指定
| 范围 | 说明 |
|---|---|
1.2 - 2.3.0 | 是 1.2.0 - 2.3.0 |
当右侧为部分指定时(例如, 2.3),缺失的部分将被视为 x (例如, 2.3.x).
当左侧为部分指定时(例如, 1.2),缺失的部分将被视为 0 (例如, 1.2.0).
组合范围
| 范围 | 说明 |
|---|---|
>=0.14 <16 | “与”关系(以空格分隔) |
0.14.x || 15.x.x | “或”关系(以竖线分隔) |
预发布版本
1.2.3-prerelease+build
说明
^ | 表示“兼容” |
~ | 表示“非常接近” |
0.x.x | 用于“初始开发阶段” |
1.x.x | 表示已定义公开的 API |