我在composer.json文件中有这一行:
"require": {
...
"friendsofsymfony/user-bundle": "~2.0@dev",
...
},
~
中的代字号~2.0@dev
到底意味着什么?这是一个占位符,并且应始终获取1.2.0
,2.2.0
,3.2.0
之类的颠覆等等吗?没有意义(并且将由*
通配符完成)。
composer.json documentation并没有说明代字号。
我问的是因为我刚读了security issue in the Symfony blog,他们建议升级到1.3.3版本。但弄清楚FOSUserBundle的版本并不那么容易(我找不到包含该版本的文件)。
答案 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
。
答案 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
包含版本集。右侧的部分版本包括
用通配符完成。例如 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
您可以使用 * 通配符指定模式。 1.0.*
是等价的
>=1.0 <1.1
Simple Version Range (>, >=, <, <=, !=)
<块引用>通过使用比较运算符,您可以指定有效范围 版本。有效的运算符是 >、>=、<、<=、!=。
您可以定义多个范围。由空格 (
) 或
逗号 (,
) 将被视为逻辑 AND。双管道 (||
) 将是
视为逻辑 OR。 AND 的优先级高于 OR。
您可以指定包的确切版本
示例:1.0.2