composer install --dry-run 不存在,官方从未支持,直接使用会报“Unrecognized option”错误;真正支持该参数的是 composer update 和 composer require(2.2+ 稳定支持)。

composer install --dry-run 不存在,别再试了。 它在 Composer 2.2+ 之前根本不被支持,而即使在新版中,官方也从未实现该参数——所有报 Unrecognized option: --dry-run 的错误,根源就在这里。
为什么 composer install --dry-run 会报错
Composer 的 install 命令设计上只依赖 composer.lock,行为高度确定:它要么按锁文件还原环境,要么失败。官方认为无需预演,所以压根没提供 --dry-run 选项。
- 试图运行
composer install --dry-run必然触发错误:Unrecognized option: --dry-run - 部分旧文档或 Stack Overflow 回答混淆了
npm install --dry-run或yarn install --dry-run的行为,直接套用到 Composer 是无效的 - Composer 2.2+ 稳定支持
--dry-run的只有update和require,install不在此列
想预览 install 效果,该用什么
真正能反映 install 行为的,是 composer install 自身的“零变更”输出逻辑——但它不靠 --dry-run,而靠状态比对:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 当
vendor/已存在且与composer.lock完全一致时,composer install直接输出Nothing to install, update or remove - 若
vendor/缺失或内容不匹配(比如删了某个包),composer install会明确列出将要安装/更新/删除的包,**这才是真实、可信赖的“预览”** - 如需无副作用验证,先
rm -rf vendor,再跑composer install --no-dev --prefer-dist --quiet --no-interaction,看退出码和输出即可
composer update --dry-run 才是正解
如果你改了 composer.json(比如调了 PHP 版本、加了新包、放宽约束),想确认锁文件会怎么变、哪些包会被升级或降级,必须用 update 的干运行:
-
composer update --dry-run会完整重算依赖图,输出Updating、Downgrading、Installing等操作列表 - 加
-v可看到详细依赖冲突路径;限定包名如composer update --dry-run monolog/monolog能聚焦关键变更 - 注意:它仍会访问 Packagist 或私有源,首次运行可能较慢;平台要求(如
ext-dom)也会被严格校验,失败即终止
最容易被忽略的兼容性盲区
--dry-run 模拟的是 Composer 解析层逻辑,不是运行时环境:
- 它不检查
autoload是否真能生成,也不验证类是否可被require -
require-dev中的扩展依赖(如phpunit/phpunit需ext-dom)在--dry-run中默认不触发校验,除非显式加--with-dependencies - CI 中若用
--ignore-platform-reqs,会掩盖真实部署失败风险;生产验证务必去掉该 flag
真正难的不是记住哪个命令带 --dry-run,而是接受:依赖解析的“安全”不等于代码能跑通。干运行只是第一道过滤网,后面还得过 php -m、composer show --installed、甚至实际启动服务这关。

















