版本命名规则:
[name].x.y.z-[state]
name为可选字段,一般为v,表示 version
x.y.z为各版本的序号,遵循语义化版本命名规范
实际上基于此规范,不应该在版本前出现 name 字段.
state可选字段,表示版本状态,例如b表示 beta 测试版,其他常见状态,后有详述
0.y.z表示开发阶段,一切可能随时改变,非稳定版。
1.0.0界定此版本为初始稳定版,后面的一切更新都基于此版本进行修改。
版本限定的语法简述为为[范围描述]<版本号描述>
范围描述,可选,必须配和版本描述确定范围,无法独立存在
<小于某一版本号
<=小于等于某一版本号
>大于某一版本号
>=大于等于某一版本号
=等于某一版本号,没有意义和直接写该版本号一样
~基于版本号描述的最新补丁版本
^基于版本号描述的最新兼容版本
-某个范围,他应该出现在两个版本描述中间,实际上语法应为<版本描述>-<版本描述>,写在此处为了统一
严格来讲对~,^的表述需要结合具体的包管理工具和版本号规则来确定.但是对于一般使用记住如下原则.
^是确保版本兼容性时,默认对次版本号的限定约束
~是确保版本兼容性时,默认对补丁号的约束
利用^,~的意义在于确保工具包对依赖版本的兼容性,排除主版本更迭,造成依赖失效的可能.
版本描述:
*通配符,类似glob模式*
x,X约等于*号,通常用于次版本和补丁的通配.
0.x警惕这种版本,说明该依赖还未稳定(如果它遵守语义化命名的话),此外由于0.x版本随时可能改变,此时^,~的都表示为对补丁版的限制.
https://segmentfault.com/a/1190000011368506
https://segmentfault.com/q/1010000006210480/a-1020000006210930
http://docs.phpcomposer.com/01-basic-usage.html#Package-Versions