在我的composer.json文件中,代字号(〜)是什么意思?

时间:2013-09-24 10:58:53

标签: symfony syntax composer-php

我在composer.json文件中有这一行:

"require": {
    ...
    "friendsofsymfony/user-bundle": "~2.0@dev",
    ...
},

~中的代字号~2.0@dev到底意味着什么?这是一个占位符,并且应始终获取1.2.02.2.03.2.0之类的颠覆等等吗?没有意义(并且将由*通配符完成)。

composer.json documentation并没有说明代字号。

我问的是因为我刚读了security issue in the Symfony blog,他们建议升级到1.3.3版本。但弄清楚FOSUserBundle的版本并不那么容易(我找不到包含该版本的文件)。

4 个答案:

答案 0 :(得分:129)

Tilde意味着下一个重要版本。在您的情况下,它相当于>= 2.0, < 3.0

完整说明位于Tilde Version Range docs page

  

最好通过示例解释~运算符:~1.2相当于>=1.2 <2.0.0,而~1.2.3相当于>=1.2.3 <1.3.0

     

另一种看待它的方法是使用~指定最小值   版本,但允许指定的最后一位数字。

Seldeak的以下评论是对Composer文档的简单总结解释。

答案 1 :(得分:2)

Tilde运算符对于使用semantic versioning scheme对其库进行版本化的项目非常有用。

Semantic versioning更像是一个评估为next significant release的指南。

对于Composer,此运算符意味着在安装更新时允许次要版本(可能包含修补程序)而不允许使用主要版本(可能无法向后兼容)

例如:~4.1将允许项目版本>=4.1,但<5.0

致谢:http://dwellupper.io/post/37/using-tilde-range-operator-to-resolve-dependency-version-in-composer-php

答案 2 :(得分:0)

~ 中的波浪号 ~2.0@dev完全意味着要升级为即时版本:

例如:

如果我们有~2.0@dev,它将立即升级到下一个版本=> ~2.x@dev

答案 3 :(得分:0)

标题 ~many constraints that can be used to handle versions 之一。

Next Significant Release Operators (~, ^)

<块引用>

最好通过示例来解释 ~ 运算符:~1.2 相当于 >=1.2 <2.0.0,而 ~1.2.3 相当于 >=1.2.3 <1.3.0

<块引用>

^ 运算符的行为非常相似,但它更接近于 语义版本控制,并且将始终允许不间断更新。为了 示例 ^1.2.3 等价于 >=1.2.3 <2.0.0,因为没有任何版本 直到 2.0 应该打破向后兼容性。对于 1.0 之前的版本 它还考虑到安全性并将 ^0.3 视为 >=0.3.0 <0.4.0

Hyphenated Version Range (-)

<块引用>

包含版本集。右侧的部分版本包括 用通配符完成。例如 1.0 - 2.0 相当于 >=1.0.0 <2.1 作为 2.0 变成 2.0.*。另一方面,1.0.0 - 2.1.0 相当于 >=1.0.0 <=2.1.0

Wildcard Version Range (.*)

<块引用>

您可以使用 * 通配符指定模式。 1.0.* 是等价的 >=1.0 <1.1

Simple Version Range (>, >=, <, <=, !=)

<块引用>

通过使用比较运算符,您可以指定有效范围 版本。有效的运算符是 >、>=、<、<=、!=。

您可以定义多个范围。由空格 ( ) 或 逗号 (,) 将被视为逻辑 AND。双管道 (||) 将是 视为逻辑 OR。 AND 的优先级高于 OR。

最后Exact Version Constraint

<块引用>

您可以指定包的确切版本 示例:1.0.2