composer update --dry-run 用于模拟更新过程,不修改文件或下载代码,仅输出将被升级、降级、移除的包,新增依赖及因冲突被跳过的更新;加 -v 显示详细解析逻辑,加 --with-dependencies 纳入子依赖,可限定包名或版本约束精准预览。

使用 composer update --dry-run 可以模拟更新过程,不实际修改 composer.lock 或安装/卸载任何包,但会输出将要发生的变更,帮你提前评估影响。
理解 --dry-run 的核心作用
它不会写入文件或下载代码,只做依赖解析和版本比对,输出三类关键信息:
– 将被升级、降级或移除的包及其版本变化
– 新增的依赖(间接引入)
– 因冲突或约束被跳过的更新(如有)
查看更详细的变更说明
默认输出较简略,加 -v(verbose)参数可显示完整依赖树和决策原因:
-
composer update --dry-run -v:显示每一步解析逻辑,包括为什么选某个版本、哪些约束起作用 -
composer update --dry-run --with-dependencies:强制把子依赖也纳入预览范围(默认只显示直接依赖的变化) - 搭配
--prefer-lowest或--prefer-stable可测试不同策略下的结果差异
定位具体包的更新行为
不想全局预览?可以限定范围,让输出更聚焦:
-
composer update --dry-run monolog/monolog:只看 monolog 的更新路径和影响 -
composer update --dry-run "phpunit/phpunit:^9.0":指定版本约束,检查是否满足且有可用版本 - 多个包用空格分隔,如
composer update --dry-run laravel/framework symfony/http-foundation
结合 diff 工具辅助判断
想对比更新前后 lock 文件差异?可先生成预览版 lock 再 diff:
- 运行
composer update --dry-run --lock(注意:此命令会临时生成新 lock 内容但不保存) - 更稳妥做法是先备份当前
composer.lock,再执行composer update --dry-run && git diff composer.lock(需已初始化 git) - 配合
composer show --outdated先快速列出所有可更新包,再针对性 dry-run
基本上就这些。dry-run 是上线前或合入主干前的安全检查习惯,配合 -v 和限定包名,能快速抓住风险点。不复杂但容易忽略。










