~1.0 表示 >=1.0.0 且 =1.0.0 且

在 composer.json 中,~1.0 和 ^1.0 是两种不同的版本约束语法,它们控制依赖包的更新范围,但规则不同。
~1.0 的含义(波浪线操作符)
波浪线操作符遵循“最小版本,不包含下一个重要/次要版本”的原则。具体行为取决于你提供的版本精度。
对于 ~1.0:
- 等价于 >=1.0.0 且
- 允许更新到 1.0.x 的最新版本,比如 1.0.5
- 不允许升级到 1.1.0 或更高
简单说:锁定在 1.0 分支,只允许修复版本(patch)和小的功能更新(minor),但不会进入 1.1。
^1.0 的含义(插入符号操作符)
插入符号遵循“兼容性版本”原则,即允许所有不会破坏 API 的更新。这是基于语义化版本(SemVer)设计的。
对于 ^1.0:
- 等价于 >=1.0.0 且
- 允许更新到 1.x 的任意版本,比如 1.5.3、1.9.9
- 不允许升级到 2.0.0 或更高
也就是说,只要主版本号不变,就可以自由升级。
关键区别总结
~1.0 更严格,限制更小的版本范围(只到 ^1.0 更宽松,允许主版本内的所有更新(直到 举个例子:-
~1.2.3允许的最高版本是 -
^1.2.3允许的最高版本是










