composer install --dry-run 无输出是正常设计,它仅校验依赖可解析性、锁文件一致性及权限,不打印变更列表;预览更新需用 composer update --dry-run --no-install -v。

composer install --dry-run 为什么没反应?
它根本不会输出详细变更列表,只做校验并返回状态码。实际运行时若无报错,终端直接退出,看起来像“没执行”。这不是 bug,是设计如此——composer install --dry-run 只检查依赖是否可解析、锁文件是否一致、权限是否足够,不打印将要安装/更新的包名。
- 真正想看预览内容,得搭配
-v(verbose)或--no-ansi+2>&1捕获 stderr,但依然很简略 - 更可靠的做法是先用
composer update --dry-run -v,它会列出计划升级的包(前提是composer.lock存在且与composer.json不一致) - 如果
composer.lock已是最新的,install --dry-run就真的什么也不输出——它认为“无需操作”
想预览 composer update 会动哪些包?用这个组合
composer update --dry-run --no-install 是最接近“纯预览”的命令。它跳过下载和写入 vendor,只做依赖求解,并强制输出将要更新/降级/移除的包清单。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
--no-install是关键:阻止实际安装行为,否则--dry-run在某些 Composer 版本中会被忽略 - 加上
-v能看到每个包的当前版本 vs 计划版本,比如:symfony/console: 5.4.32 → 6.4.7 - 若只想看某几个包,直接指定:
composer update --dry-run --no-install <code>monolog/monologguzzlehttp/guzzle - 注意:PHP 版本不匹配、平台配置冲突等错误仍会中断执行,此时
--dry-run仅帮你提前暴露环境问题
composer require --dry-run 的坑:它不检查自动加载冲突
composer require --dry-run 会模拟添加依赖,但不会验证新包的 autoload 规则是否与现有项目冲突(比如两个包都试图注册 src/ 下的类前缀)。这类问题只有真跑一次 composer dump-autoload 才会暴露。
- 常见现象:预演成功,实际
require后运行时报Class not found,根源常是 PSR-4 映射重叠或未生效 - 建议加一步手动验证:
composer dump-autoload --dry-run(虽然这命令本身不存在),退而求其次,先composer require --no-update,再composer dump-autoload -v看输出是否正常 -
--dry-run对require的版本约束解析是准确的,但对 autoloading、scripts、plugins 的副作用完全不模拟
CI/CD 中用 --dry-run 判断是否需要触发构建?小心误判
单纯靠 composer update --dry-run 的退出码(0 表示“可执行”,非 0 表示失败)不能可靠判断“是否有变更”,因为即使有包要更新,只要求解成功,它也返回 0。
- 更稳妥的方式是比对 lock 文件变化:
git diff --quiet composer.lock || echo "lock changed" - 如果必须用 Composer 命令,可用:
composer show --outdated --direct --no-ansi | grep -q "." && echo "outdated",它只检查直接依赖是否过期 -
--dry-run在容器或受限环境中可能因缺少 git 或网络权限提前失败,导致误判为“无变更”,实际是校验阶段卡住了
--dry-run 最适合快速确认语法和基础兼容性,而不是当“变更预览器”。真要看改了什么,盯紧 composer.lock 的 diff,比任何 dry-run 都准。










