[关闭]
@liuwanwei 2018-04-25T15:34:27.000000Z 字数 1010 阅读 2595

composer 包版本号的含义

php composer


关于 composer 包版本号,看起来简单,实际上当项目引用代码中出现 ~ 和 ^ 时很容易引起误解,下面简单记录一下。

官方有两个比较好的资源:

  1. 官方详细介绍文档
  2. 官方提供的测试工具

使用测试时,可以填写 mdmsoft/yii-admin 进行测试,特别请注意对比:^2.0.0 和 ~2.0.0 的差异。

1. 比较运算符

另外,还有个特殊的连接线(-)运算符,这个比较麻烦,理解起来很蛋疼,少用。

2. 支持条件间的“与”、“或”

例如:

composer require some-package ">=1.0 <1.1 || >=1.2"

3. 波浪号(tilde)~

这个常用于项目版本使用 Semantic 命名法 的场合。
在 semantic 命名法中,将版本号分为三部分:

如:1.0.1,代表主版本号 1,副版本号 0,补丁版本号 1.

下面是一些例子:

~1.2 代表:

>=1.2 < 2.0.0

~1.2.3 代表:

>=1.2.3 <1.3.0

理解上主要靠最后的那个数字:

3.1 in npm

而在 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 代表:

>=1.2.0 < 1.3.0

4. 插入符号(caret)^

根据文档中的说法,这个符号更接近于 Semantic 命名法 的要求,例如:

^1.2.3 代表:

>=1.2.3 <2.0.0

4.2. in npm

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 符合)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注