应使用 ^ 约束符(如 "^1.2.3"),它允许升级 minor 和 patch 版本但禁止 major 升级;避免使用 * 或 dev-main 等宽松约束;配合 --dry-run 预览、按包更新及 composer outdated 定期检查可进一步保障版本稳定。

默认情况下,Composer 会根据你定义的版本约束(如 ^1.2.3 或 ~1.2)决定是否允许更新到新版本。若想在 composer update 时**只升级小版本(minor)和补丁版本(patch),不升级主版本(major)**,关键在于正确使用版本约束符,并配合合适的命令选项。
^(caret)约束符^ 是最常用且推荐的方式,它允许 minor 和 patch 升级,但禁止 breaking change 的 major 升级(前提是遵循语义化版本规范)。
^1.2.3 → 允许升级到 1.x.x 中任意高于或等于 1.2.3 的版本,如 1.2.4、1.3.0、1.9.9,但不会到 2.0.0
^1.2 等价于 ^1.2.0,效果同上^0.1.2 在 0.x 范围内行为略有不同(只允许 patch 升级),需注意早期版本的特殊规则*、dev-main 或无约束)这些写法会让 Composer 拉取最新可用版本,可能跳过 major 版本边界。
"monolog/monolog": "*" —— 可能升级到 3.0.0
"monolog/monolog": "dev-main" —— 总是拉取最新开发分支,完全不受控"monolog/monolog": "^2.8" 或更精确的 "^2.8.0"
composer update 时限制范围(可选补充)即使约束符已设好,执行 composer update 默认仍会尝试满足所有约束并升级到最新兼容版本。若想进一步确保不意外触发 major 升级(比如因依赖树中其他包间接要求),可:
composer update --dry-run 预览将发生的变更,检查是否有 major 版本被纳入composer update monolog/monolog --with-dependencies,避免全量更新带来的不确定性composer.json 中的约束始终使用 ^,这是最根本的防线如果项目已稳定在某主版本(如 1.x),可在 composer.json 中显式固定主版本号,增强可读性和防护:
"symfony/console": "^1.0 || ^2.0" 显式允许多个主版本(不推荐,增加复杂度)"symfony/console": "^1.10",让 Composer 自动守住 1.x 边界composer outdated 查看哪些包有新 minor/patch 可升,主动管理而非被动等待基本上就这些。核心就是:用 ^ 写约束,别偷懒用 *,再加点预览和检查习惯,就能稳稳守住主版本线。
以上就是如何让 Composer 在更新时只考虑小版本和补丁更新(minor and patch)?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号