内容翻译自:https://getcomposer.org/doc/articles/versions.md#next-significant-release-operators
波浪号版本范围(~)
~
符号最好可以用一个例子来解释:~1.2
等价于 >=1.2 <2.0.0
,而 ~1.2.3
等价于 >=1.2.3 <1.3.0
。由你可见这对于遵守语义化版本控制(semantic versioning)非常有用,一个通用的用法是标记一个你依赖的最小次要版本(minor version),比如 ~1.2
(这允许任何更新,但不包含2.0)。理论上来说直到 2.0 之前都不会有向后兼容性破坏,这样那就是正常的。另一个看待它的方式是,~
指定一个最小版本,但是允许版本最后一个数更新。
~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没有一个版本会破坏向后兼容性。对于pre-1.0的版本它也表现的更加安全并且将 ^0.3
对待于 >=0.3.0 <0.4.0
^1.2.3
表示 >=1.2.3 <2.0.0
^0.3
表示 >=0.3.0 <0.4.0