composer中的版本约束1.0.*和~1.0有什么区别

31次阅读

<p>1.0.* 匹配 1.0.0 到 1.0.999 的所有修订版,等价于 >=1.0.0 且 <1.1.0;~1.0 表示 >=1.0.0 且 <1.1.0,两者在实际使用中行为相同。</p>

composer中的版本约束1.0.*和~1.0有什么区别

在 Composer 中,版本约束 1.0.*~1.0 看起来相似,但它们的含义和行为有明显区别。理解这些差异有助于更精确地控制依赖包的更新范围。

1.0.*:匹配指定主版本和次版本下的所有修订版本

这个写法表示允许安装 1.0 开头的所有版本,即匹配 1.0.0 到 1.0.999… 的任意修订版(patch)。

它等价于:

  • >=1.0.0

也就是说,只要主版本是 1,次版本是 0,任何 patch 版本都可以接受。例如:1.0.1、1.0.5、1.0.20 都符合要求,但 1.1.0 不行。

~1.0:波浪线操作符,按“最小边界”进行限制

波浪线 ~ 的规则是:锁定最低指定版本的**最后一个数字位**,允许在其后的修订中升级。

对于 ~1.0,Composer 会理解为:

  • >=1.0.0

这意味着它允许所有 1.x 版本,直到但不包括 2.0.0。比如 1.0.5、1.3.0、1.9.9 都可以安装。

composer中的版本约束1.0.*和~1.0有什么区别

有道小P

有道小P,新一代ai全科学习助手,在学习中遇到任何问题都可以问我。

composer中的版本约束1.0.*和~1.0有什么区别64

查看详情 composer中的版本约束1.0.*和~1.0有什么区别

注意:~1.0 实际上等同于 >=1.0.0 ,因为它把 1.0 当作“最小边界”,而只锁定主版本(major),允许次版本(minor)和修订版本(patch)自由更新。

如果你写的是 ~1.0.0,那结果就不同了,它表示:

  • >=1.0.0

这反而和 1.0.* 是一样的范围。

关键区别总结

回到问题本身:

  • 1.0.* → 允许 1.0.x(即 >=1.0.0 且
  • ~1.0 → 允许 1.x.x(即 >=1.0.0 且

所以最大的不同在于是否允许次版本(minor)升级。使用 1.0.* 更保守,只接受补丁更新;而 ~1.0 更宽松,接受所有 1.x 的功能更新(minor),只要不进 2.0。

基本上就这些,不复杂但容易忽略细节。

相关标签:

composer 区别 composer

text=ZqhQzanResources