~(波浪号)是Composer中“最小上限”版本约束,允许升级补丁和小版本但不跨主版本,如~1.2等价于>=1.2.0

在 Composer 中,~(波浪号)版本约束是一种“最小上限”策略,它允许在保持向后兼容的前提下自动升级补丁和小版本,但不会跨主版本升级。它的核心逻辑是:只允许更新到“不会破坏现有 API”的最高版本。
~1.2 等价于 >=1.2.0 —— 它允许所有 1.x 的版本,但禁止升级到 2.0 及以上。<br><code>~1.2.3 等价于 >=1.2.3 —— 它只允许 1.2.x 范围内的更新(如 1.2.4、1.2.10),但不会升到 1.3.0。
PHP 社区普遍遵循 语义化版本(SemVer):主版本(X)变更表示不兼容的 API 修改,次版本(Y)增加向后兼容的新功能,修订版(Z)仅修复 bug。~ 正是利用这一约定,把升级范围控制在“不改变主版本号 + 不突破次版本边界(当指定了 Z 时)”内,从而天然适配向后兼容场景。
monolog/monolog),推荐写成 "monolog/monolog": "~2.8" 或更精确的 "~2.8.0",既获得安全补丁,又避免意外升级到 3.x~2.8.0 比 ~2.8 更明确,后者可能意外拉取 2.8.0 之前未发布的 2.8.x(极少见,但语义上更宽)~;这类包行为变化影响较小,可考虑用 ^ 或锁定具体版本composer update 时,Composer 会按 ~ 规则选择满足条件的最新可用版本,并写入 composer.lock
^1.2.3 ≈ >=1.2.3 (只要主版本不变就放行)<br><code>~1.2.3 ≈ >=1.2.3 (连次版本都不让跨)<br>
所以 <code>~ 更保守,更适合你明确希望“卡死在某个次版本周期内”的情况,比如配合长期维护分支或内部 SDK 版本策略。
基本上就这些。用对 ~,既能享受自动修复和优化,又不用天天担心更新崩掉 CI 或线上逻辑。
以上就是如何在 Composer 中使用 ~ 版本约束来确保向后兼容的更新?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号