我想知道composer.json中插入符号和波形符号之间的区别。我可以这样说:插入符号(^)锁定第一个和第二个版本号(1.2.3中的1.2)和波浪号(〜)只锁定第一个版本号(1.2.3中的1)?
https://getcomposer.org/doc/articles/versions.md#next-significant-release-operators
答案 0 :(得分:8)
来自您关联的文档:
~1.2相当于&gt; = 1.2 <2.0.0,而~1.2.3相当于> = 1.2.3 <1.3.0
^ 1.2.3相当于&gt; = 1.2.3&lt; 2.0.0
代字号取决于版本号中的位数。给出的最后一位数可以变化。
插入符号几乎总是更好的选择,因为它的行为类似于直接替换(~1.2
与^1.2
或^1.2.0
相同),但在寻址时提供更好的灵活性非零修补程序版本(^1.2.3
与~1.2.3
不同,因为代字号版本仅允许更新低于1.3.0,插入符允许更新低于2.0.0。
使用代字号作为版本要求的唯一原因是,如果必须处理获得兼容更新的“零”版本。代数在~0.1
和~1.1
之间没有差异,在这两种情况下,它都允许更新到下一个主要版本号(分别低于1.0或2.0)。插入符号操作符将禁止此范围内的次要更新:^0.1
不允许更新为0.2,因为在语义版本控制中,零点式版本可能会在转到零点+ 1时引入不兼容的更改。 / p>
要点:
alpha
,beta
或rc
稳定性与预期的最终版本一起使用,即1.0.0-alpha1
将概括为1.0.0
{1}}将来会出现。