1.0.* 匹配 1.0.0 到 1.0.999 的所有修订版,等价于 >=1.0.0 且 =1.0.0 且 <1.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 都可以安装。
注意:~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中的版本约束1.0.*和~1.0有什么区别的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/148334.html
微信扫一扫
支付宝扫一扫