composer install --dry-run 会跳过下载包、写入 vendor/、生成 autoload.php 和执行脚本;仅解析 composer.json 和 composer.lock,校验依赖兼容性并打印操作列表。

composer install --dry-run 会跳过哪些实际操作
composer install --dry-run 不会下载包、不写入 vendor/、不生成或更新 autoload.php,也不会执行任何脚本(如 post-install-cmd)。它只解析 composer.json 和 composer.lock,校验依赖兼容性,并打印将要执行的操作列表。
常见误判是以为它会检查网络连通性或镜像可用性——其实不会。哪怕配置了失效的镜像源,只要本地已有 composer.lock 且依赖可解析,--dry-run 就能“成功”通过。
- 它不触发
require的远程包元数据请求(除非 lock 文件缺失且需重解析) - 不校验已安装包的文件完整性(如
composer install --prefer-dist --dry-run仍跳过 hash 检查) - 若
composer.lock不存在,--dry-run会尝试生成临时锁结构,但不写入磁盘
composer update --dry-run 和 install --dry-run 的关键区别
composer update --dry-run 的行为更激进:它会主动访问 packagist 或配置镜像,拉取最新版本元数据,重新计算依赖图,并对比当前 composer.lock,最终列出「将要升级/降级/移除」的包。而 install --dry-run 默认严格按 lock 文件还原,不考虑 composer.json 中更宽松的版本约束(如 "monolog/monolog": "^2.0")。
- update --dry-run 可能因网络失败中断,install --dry-run 几乎总能完成(只要 lock 存在且格式合法)
- update --dry-run 会显示「从 x.x.x → y.y.y」的变更,install --dry-run 通常只显示「将安装 x.x.x」(即使该版本已在 vendor 中)
- 两者都不执行
scripts,但 update --dry-run 会提前校验脚本定义是否存在(比如引用了不存在的命令)
CI/CD 中用 --dry-run 验证依赖变更是否安全
在 GitHub Actions 或 GitLab CI 中,用 composer update --dry-run 检查 PR 是否引入了不兼容升级(如 PHP 版本要求变更、废弃包引入),比直接跑 composer update 更轻量也更安全。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
但要注意:默认情况下它不会报错退出,即使检测到冲突。必须加 --no-interaction 并配合 || true 之外的判断逻辑:
composer update --dry-run --no-interaction 2>&1 | grep -q "would update" && echo "⚠️ 有依赖变更" || echo "✅ 无变更"
更稳妥的做法是捕获退出码:composer update --dry-run --no-interaction 实际上在「无需变更」时返回 0,在「存在冲突无法解决」时返回 2,但正常有变更计划时仍返回 0 —— 所以不能单靠退出码判断。
--dry-run 无法覆盖的边界情况
它不模拟平台配置的实际影响。例如:composer.json 中设置了 "platform": {"php": "8.2.0"},但宿主机是 PHP 8.1,--dry-run 不会警告运行时可能失败;又比如扩展依赖(如 "ext-gd": "*")只在真实 install 阶段校验,dry-run 阶段跳过。
- 自定义
repositories类型(如package或artifact)的路径有效性,dry-run 不检查文件是否存在 - 私有包的认证(HTTP basic / auth.json)是否有效,只有真实请求时才暴露
- 某些插件(如
hirak/prestissimo已弃用,但类似加速插件)的行为差异,在 dry-run 下完全不可见
真正要确认环境兼容性,还是得在隔离容器里跑一次真实的 composer install,--dry-run 只适合快速过滤明显问题。

















