Composer 不支持断点续传,断网后需手动清理 vendor/子目录、installed.json 和缓存,并用 --no-plugins --no-scripts --prefer-dist 重试;换国内镜像源比调超时更有效。

断网中断后 Composer 不会自动续装,也不会“卡住等恢复”,而是直接报错退出;后续想继续,必须手动清理 + 策略重试,否则大概率重复失败、校验卡死或 vendor 结构错乱。
composer install 断网后为什么不能接着跑?
Composer 本身不支持断点续传——它不是下载器,而是一套依赖解析 + 安装 + 脚本执行的组合流程。网络中断时,可能卡在任意环节:DNS 解析、TLS 握手、包元数据拉取、zip 下载、解压、autoload 生成,甚至插件钩子中。一旦中断,vendor/ 可能处于半解压状态,installed.json 可能写了一半,缓存 zip 也可能损坏。
- 强行再次运行
composer install,会重新触发全量解析和校验,而不是跳过已成功部分 -
composer.lock不会被自动修复,如果中断前刚更新了某包但没写完,lock 文件可能处于脏状态 - 某些插件(如
hirak/prestissimo)会在中断后残留临时文件,干扰下一次下载
断网中断后必须清理哪些文件?
关键不是“删得越多越好”,而是精准清除导致冲突的状态残留:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 删掉失败包的子目录(如
vendor/monolog/monolog),比直接清空整个vendor/更安全,保留其他已成功安装的包 - 删掉
vendor/composer/installed.json:这个文件记录当前已安装包的精确版本和哈希,中断后内容不可信 - 运行
composer clear-cache:避免复用损坏的 zip 缓存(常见于 TLS 中断导致的截断 zip) - 不要动
composer.lock,除非你确认它被手动改过;它是重试时唯一可信的版本依据
重试时该加哪些参数才稳?
默认重试往往更慢,因为会加载插件、执行脚本、校验平台要求——这些都可能在断网时额外失败:
- 加
--no-plugins --no-scripts:跳过所有插件逻辑和 post-install-cmd 等脚本,大幅降低失败面 - 强制走 dist 包:
--prefer-dist(默认开启,但显式加上更明确),避免中断时卡在 git clone - 别加
--no-autoloader或--optimize:它们不解决中断问题,反而让后续调试更麻烦 - 如果只是验证结构是否完整,可用
composer install --no-install先做本地 lock vs installed.json 校验,不碰文件系统
为什么换镜像源比调超时参数更管用?
八成的“断网感”其实不是真断网,而是连不上 packagist.org:DNS 卡顿、TLS 握手失败、中间设备切断长连接。阿里云、腾讯云镜像源基本不存在这类问题。
- 全局设镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 私有包没同步到镜像?需单独在
composer.json里配repositories,否则会回退到官方源卡住 - 镜像返回 503?用
curl -I https://mirrors.aliyun.com/composer/验证连通性,别只看 Composer 报错
真正麻烦的不是断网本身,而是你以为 vendor 目录“看起来完整”,结果某个包的 autoload.php 没生成、某个插件的 bin 脚本没软链、或者 installed.json 里少了一行——这些状态残留不会报错,但会让应用在运行时才崩。

















