composer install --dry-run不能直接续装但可判断是否安全重试:若输出含大量“skipped”则可直接重试install;若报autoload缺失等错,则需删vendor/autoload.php和vendor/composer/后dump-autoload再install。

composer install --dry-run 能不能续装中断的依赖
不能直接续装,但能帮你判断是否可以安全重试。它不写入 vendor,也不生成 autoload 文件,只做依赖解析和状态比对。
常见错误现象是 composer install 中断后部分包已下载、vendor/autoload.php 已生成,但某些包的 install 阶段没走完——此时直接重跑 composer install 可能报 Class not found 或 autoload 错误。
- 先运行
composer install --dry-run,如果输出里大量出现Skipped(比如Skipped installation of package foo/bar),说明 Composer 识别出已安装内容,可直接再跑一次composer install - 如果报错如
Could not find autoload file for xxx或提示某个包“not installed”,说明中间态损坏,需清理:删掉vendor/autoload.php和vendor/composer/目录(保留其他包目录),再composer dump-autoload,最后重试install - 注意:--dry-run 不会触发
post-install-cmd等脚本,所以它无法验证脚本执行是否成功,仅限依赖层面检查
为什么 --dry-run 不校验 platform-reqs
因为 composer install 的设计逻辑是“按 lock 文件还原”,platform 检查默认被跳过——除非你显式加 --ignore-platform-reqs=false。
这导致一个典型坑:你在 PHP 8.3 环境下用 PHP 8.1 生成的 composer.lock 运行 composer install --dry-run,它可能完全不报错,但真实 install 时因扩展缺失或版本不兼容而失败。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须加
--ignore-platform-reqs=false才能让 --dry-run 触发平台校验(例如检查ext-gd是否存在、PHP 版本是否满足) - CI 流水线中建议固定写成:
composer install --dry-run --no-dev --ignore-platform-reqs=false - 不加这个参数时,--dry-run 对多环境部署几乎无预警能力,容易在生产机上翻车
composer install --dry-run 和 composer update --dry-run 的本质区别
前者是“还原快照”,后者是“推演变更”——它们模拟的对象完全不同,不能混用场景。
install --dry-run 读 composer.lock,只告诉你“这些包会从哪下载、解压到哪、是否跳过”,不涉及版本决策;而 update --dry-run 读 composer.json,会重新计算依赖树、尝试升/降级、解决冲突,输出里会出现 Upgrading foo/bar (1.2.0 => 1.3.0) 这类信息。
- 想确认当前 lock 文件能否在目标环境跑通 → 用
install --dry-run - 想评估修改
composer.json后的影响 → 用update --dry-run - 两者都加
--no-dev时行为也不同:install --dry-run --no-dev会跳过所有 require-dev 包;update --dry-run --no-dev则仍会参与依赖解析(只是不安装),可能影响主依赖版本选择
CI 中用 --dry-run 做前置检查的可靠写法
别只靠退出码判断成功,要结合输出内容和参数组合。单纯 composer install --dry-run 在镜像不可达时也可能返回 0(比如缓存命中但网络不通)。
- 必须加
--no-plugins --no-scripts,避免插件或脚本干扰退出码或输出 - 加上
-v(verbose)并 grep 关键词:composer install --dry-run -v 2>&1 | grep -q "Installing.*from",确保至少有一条真实安装动作被模拟出来 - 若使用私有镜像,记得传真实 User-Agent:
-H "User-Agent: Composer/2.7.0 (Linux; 6.5; PHP 8.2)",否则腾讯云等镜像会 403 - 退出码为 0 且匹配到
Installing或Skipped,才认为通过;只靠$?不够










