Composer 中依赖包的版本约束和稳定性

版本约束

通过 Composer 来安装依赖包,关于依赖包的版本约束,可以使用多种不同的方式。

版本格式

版本格式:主版本号.次版本号.修订版本号,版本号递增规则如下:

  • 主版本号:当你做了不兼容的 API 修改。
  • 次版本号:当你做了向下兼容的功能性新增。
  • 修订版本号:当你做了向下兼容的问题修正。

先行版本号及版本编译元数据可以放到“主版本号.次版本号.修订版本号”的后面,作为延伸。

确切的版本号

你可以指定包的确切版本。如 monolog/monolog 1.0.2 。

范围

通过使用比较操作符可以指定有效的版本范围。

有效的运算符有 >、>=、<、<=、!=、~、^ 等。

你可以定义多个范围:

  • 中间用逗号隔开,视为逻辑 AND 。
  • 中间用管道符号 | 隔开,视为逻辑 OR 。

AND 的优先级高于 OR。

>=1.0 
>=1.0,<2.0 
>=1.0,<1.1|>=1.2

通配符

你可以使用通配符 * 来指定一种模式。

1.0.* 与 >=1.0,<1.1 是等效的。

波浪号运算符

~ 表示版本号只能改变最末尾那段(如果是 ~x.y 末尾就是 y,如果是 ~x.y.z 末尾就是 z)。

波浪号运算符 ~ ,对于遵循语义化版本号的项目非常有用。

~1.2 相当于 >=1.2,<2.0

~1.2.3 相当于 >=1.2.3,<1.3

常见的用法是标记你所依赖的最低版本,像 ~1.2 (允许 1.2 以上的任何版本,但不包括下一个重要版本 2.0)。

注意: 虽然 2.0-beta.1 严格地说是早于 2.0,但是,根据版本约束条件, 例如 ~1.2 却不会安装这个版本。就像前面所讲的 ~1.2 只意味着 .2 部分可以改变,但是 1. 部分是固定的。

^运算符

^ 表示除了主版本号以外,次版本号和修订版本号都可以变。

^ 和 ~ 的意思很接近,在x.y的情况下是一样的,都是代表 x.y <= 版本号 < (x+1).0。但是,在版本号是x.y.z的情况下就有区别,举个例子吧:

~1.2.3 代表 1.2.3 <= 版本号 < 1.3.0

^1.2.3 代表 1.2.3 <= 版本号 < 2.0.0

稳定性

默认情况下只有稳定的发行版才会被考虑在内。

如果你也想获得 RC、beta、alpha 或 dev 版本,你可以使用稳定标志。

{
    "require": {
        "monolog/monolog": "1.0.*@beta",
        "acme/foo": "@dev"
    }
}

你可以对所有的包做 最小稳定性 设置,而不用每个依赖逐一设置。

minimum-stability (root-only)

minimum-stability 定义了包的最小稳定性。默认为 stable(稳定)。

如果你依赖于一个 dev(开发版本)包,你应该明确的进行定义。

minimum-stability 会对每个包的所有版本都会进行稳定性检查,低于 minimum-stability 所设定的最低稳定性的版本,将在解决依赖关系时被忽略。对于个别包的特殊稳定性要求,可以在 require 或 require-dev 中设定。

可用的稳定性标识(按字母排序)有:dev、alpha、beta、RC、stable。

prefer-stable (root-only)

当此选项被激活时,Composer 将优先使用更稳定的包版本。

使用 "prefer-stable": true 来激活它。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值