版本格式
0.y.z
表示开发阶段,一切可能随时改变,非稳定版。1.0.0
界定此版本为初始稳定版,后面的一切更新都基于此版本进行修改。
版本格式:主版本号.次版本号.修订号
版本示例:1.2.3
版本号递增规则
- 主版本号:当你做了不兼容的 API 修改,
- 次版本号:当你做了向下兼容的功能性新增,
- 修订号:当你做了向下兼容的问题修正。
先行版本号和开发版本号
先行版本号(Pre-release):意味该版本不稳定,可能存在兼容性问题。
格式为: X.Y.Z.[a-c][正整数]
,如 1.0.0.a1,1.0.0.b99,1.0.0.c1000。
开发版本号:常用于 CI-CD(持续集成和持续交付)
格式为: X.Y.Z-dev[正整数]
,如 1.0.1-dev4
版本名称
常见
描述方式 | 说明 | 含义 |
---|---|---|
α 或a |
alpha 版 | 内测版本,内部测试的版本,bug 较多 |
β 或b |
beta 版 | 公测版本,给外部进行测试的版本,有缺陷 |
γ 或g |
Gamma 版 | 相当成熟的测试版,于发行版相差无几 |
rc |
Release Candidate | 是前面三种测试版的进一步版本,实现了全部功能,清除了大部分 bug,接近发布倒计时,有时会进一步细分为 rc1,rc2 |
其他
描述方式 | 说明 | 含义 |
---|---|---|
Demo |
演示版 | 只集成了正式版部分功能,无法升级 |
SP |
SP1 | 是 service pack 的意思表示升级包 |
Trial |
试用版 | 试用版 |
Unregistered |
未注册 | 有功能或时间限制的版本 |
Lite |
精简版 | 只含有正式版核心功能 |
enhance |
增强版 | 属于正式版1 |
free |
免费版 | 自由使用版本 |
release |
发行版 | 有时间限制 |
upgrade |
升级版 | 有功能增强或修复 bug |
Retail |
零售版 | 单独发售 |
Cardware |
共享版 | 公用许可证 |
版本限定
在进行包管理时,为了保证安装依赖的兼容性.
{
"devDependencies": {
"karma": "0.13.22"
}
}
表示安装 0.13.22
版本的 karma.
范围描述
<
小于某一版本号<=
小于等于某一版本号>
大于某一版本号>=
大于等于某一版本号=
等于某一版本号,没有意义和直接写该版本号一样~
基于版本号描述的最新补丁版本^
基于版本号描述的最新兼容版本-
某个范围
严格来讲对 ~,^
的表述需要结合具体的包管理工具和版本号规则来确定.但是对于一般使用记住如下原则.
^
是确保版本兼容性时,默认对次版本号的限定约束
~
是确保版本兼容性时,默认对补丁号的约束
利用
^,~
的意义在于确保工具包对依赖版本的兼容性,排除主版本更迭,
造成依赖失效的可能.
版本描述
*
通配符x,X
约等于*
号,通常用于次版本和补丁的通配.
0.x
警惕这种版本,说明该依赖还未稳定(如果它遵守语义化命名的话),此外由于0.x
版本随时可能改变,此时^,~
的都表示为对补丁版的限制.
< 1.2.3 小于1.2.3 的版本均可
= 1.2.3 只支持等于1.2.3 的版本
<= 1.2.3 只支持小于等于1.2.3 的版本
> 1.2.3 只支持大于 1.2.3 的版本
>= 1.2.3 只支持大于等于 1.2.3 的版本
1.2.3-2 支持 >=1.2.3 <3.0.0 的版本
1.x.1 支持 >=1.0.1 <1.1.0 的版本
* 支持 >= 0.0.0 的版本
"" 同 *
1 表示 >=1.0.0 <2.0.0 其余任意位置为空相似
1.0 >= 1.0.0 < 1.1.0
~1.1.1 >=1.1.1 <1.2.0
~1.1 >=1.1.0 <1.2.0
~1 >=1.0.0 <2.0.0
^1.1.1 >=1.1.1 <2.0.0
^0.1.1 >=0.1.1 <0.2.0 注意这里,不要以为是 0.1.1-1.0.0 之间
^0.0.1 >=0.0.1 <0.0.2 同上,请注意
主要版本
- 指定版本:比如
1.2.2
,遵循“大版本.次要版本.小版本”的格式规定,安装时只安装指定版本。 - 波浪号(
tilde
)+指定版本:比如~1.2.2
,表示安装1.2.x
的最新版本(不低于1.2.2
),但是不安装1.3.x
,也就是说安装时不改变大版本号和次要版本号。 - 插入号(
caret
)+指定版本:比如ˆ1.2.2
,表示安装1.x.x
的最新版本(不低于1.2.2
),但是不安装2.x.x
,也就是说安装时不改变大版本号。需要注意的是,如果大版本号为 0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。 - latest:安装最新版本。
文档
https://semver.org/lang/zh-CN/
https://getcomposer.org/doc/articles/versions.md