波浪线(~)在我的 poser.json 文件中是什么意思?

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

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

~2.0@dev中的波浪 ~到底是什么意思?这是一个占位符,并且总是获取像 1.2.02.2.03.2.0这样的颠覆吗?没有意义(可以通过 *通配符完成)。

Comber.json 文档没有任何关于潮汐的信息。

我这么问是因为我刚刚读到了一个 Symfony 博客的安全问题,他们建议升级到1.3.3版本。但是计算 FOSUserBundle 的版本并不容易(我找不到包含该版本的文件)。

38159 次浏览

Tilde 的意思是 下一次重大发布。在你的例子中,它等价于 >= 2.0, < 3.0

完整的解释见 波浪版本范围文档页:

~操作符最好用例子来解释: ~1.2等价于 >=1.2 <2.0.0,而 ~1.2.3等价于 >=1.2.3 <1.3.0

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

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

Tilde操作符对于使用 semantic versioning方案对其库进行版本控制的项目非常有用。

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

波浪形 ABC1中的 ~的确切意思是上升到即时版本:

例如:

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

波浪 ~可用于处理版本的许多约束中的一个。

下一个重要的发布操作符(~ ,^) :

~操作符最好用例子来解释: ~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版本应该打破向后兼容性 它也在安全的思想和行为作为 ^0.3作为 >=0.3.0 <0.4.0

连字型版本范围(-)

包含的版本集。右侧的部分版本包括 例如,1.0 - 2.0等效于 当 2.0变成 2.0.*时,>=1.0.0 <2.1就变成了 2.0.*。另一方面,1.0.0 - 2.1.0等价于 >=1.0.0 <=2.1.0

通配符版本范围(. *)

可以使用 * 通配符指定模式 >=1.0 <1.1

简单版本范围(> ,> = ,< ,< = ,! =)

通过使用比较运算符,可以指定有效的 有效的操作符是 > ,> = ,< ,< = ,! = 。

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

最后是 精确版本限制

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