packagist 中的 ~ 和 ^ 有什么区别

What's the difference between ~ and ^ in packagist

我对 packagist 中 '~' 和 '^' 的区别有点困惑,

composer.json 文件中的代码示例:

 "require": {
             "doctrine/dbal": "^2.6",      //this is using '^' symbol
             "garygreen/pretty-routes": "~0.0.6"    //this is using '~' symbol
            },

有人可以为我解释一下吗?

最好通过示例来解释 ~ 运算符:~1.2 相当于 >=1.2 <2.0.0,而 ~1.2.3 相当于 >=1.2.3 <1.3.0。如您所见,它对涉及语义版本控制的项目最有用。一个常见的用法是标记您所依赖的最小次要版本,例如 ~1.2(它允许任何高达但不包括 2.0 的版本)。

^ 运算符的行为非常相似,但它更接近于语义版本控制,并且始终允许 non-breaking 更新。例如,^1.2.3 等同于 >=1.2.3 <2.0.0,因为 2.0 之前的 none 版本应该会破坏向后兼容性。对于 1.0 之前的版本,它也考虑到安全性并将 ^0.3 视为 >=0.3.0 <0.4.0.

发件人:https://getcomposer.org/doc/articles/versions.md#tilde-version-range-