@liuwanwei
2018-04-25T15:34:27.000000Z
字数 1010
阅读 2595
php
composer
关于 composer 包版本号,看起来简单,实际上当项目引用代码中出现 ~ 和 ^ 时很容易引起误解,下面简单记录一下。
官方有两个比较好的资源:
使用测试时,可以填写 mdmsoft/yii-admin 进行测试,特别请注意对比:^2.0.0 和 ~2.0.0 的差异。
另外,还有个特殊的连接线(-)运算符,这个比较麻烦,理解起来很蛋疼,少用。
例如:
composer require some-package ">=1.0 <1.1 || >=1.2"
这个常用于项目版本使用 Semantic 命名法 的场合。
在 semantic 命名法中,将版本号分为三部分:
如:1.0.1,代表主版本号 1,副版本号 0,补丁版本号 1.
下面是一些例子:
~1.2 代表:
>=1.2 < 2.0.0
~1.2.3 代表:
>=1.2.3 <1.3.0
理解上主要靠最后的那个数字:
而在 NPM 对版本的描述中,波浪号这样定义:Tilde Ranges ~1.2.3 ~1.2 ~1
Allows patch-level changes if a minor version is specified on the comparator. Allows minor-level changes if not.
翻译一下就是:
- 如果提供了副版本号,只允许改变补丁版本
- 如果没有,可以改变副版本号
~1.2 代表:
>=1.2.0 < 1.3.0
根据文档中的说法,这个符号更接近于 Semantic 命名法 的要求,例如:
^1.2.3 代表:
>=1.2.3 <2.0.0
Allows changes that do not modify the left-most non-zero digit in the [major, minor, patch] tuple.
翻译一下就是:
不允许改变最左边的非零数字,剩下的可以随便修改
^1.2 代表:
>=1.2.0 < 2.0.0
^1.2.3 代表:
>=1.2.3 < 2.0.0
^0.2.3 代表:
>=0.2.3 < 0.3.0
^0.0.3 代表:
>=0.0.3 < 0.0.4 (意味只有 0.0.3 符合)