composer如何在低带宽下暂停并恢复安装?(断点续传替代方案)

1次阅读

composer install 不支持真正断点续传,因其本质是依赖解析与安装的组合流程,网络中断后需重新解析锁文件、校验哈希、解压未完成包;优化方式包括使用–no-scripts–no-plugins、确保lock完整、换国内镜像源、启用缓存、手动清理失败包目录及暂存vendor进度。

composer如何在低带宽下暂停并恢复安装?(断点续传替代方案)

composer install 为什么不能真正断点续传

因为 composer install 本身不支持断点续传——它不是下载器,而是依赖解析 + 包安装的组合流程。网络中断后重跑,会重新解析 composer.lock、重新校验哈希、重新解压所有未完成的包,看似“继续”,实则重复大量工作,低带宽下反而更耗时。

composer install --no-scripts --no-plugins 缩短单次失败代价

跳过脚本和插件执行能显著减少非下载类耗时,尤其在 CI 或受限环境里。失败后重试时,只要 vendor/ 已部分存在,Composer 会跳过已成功安装的包(基于 composer.lockvendor/composer/installed.json 的比对),只补漏没下完的。

  • 务必先确保 composer.lock 文件完整且未被修改
  • 不要加 --prefer-dist(默认就是),避免意外触发 --prefer-source 导致 clone 大仓库
  • 如果之前失败卡在某个包解压阶段,可手动删掉对应 vendor/<package-name></package-name> 目录再重试

换国内镜像源 + 启用 cache-dir 是最有效提速手段

低带宽本质是下载慢,不是 Composer 逻辑卡顿。镜像源解决的是 DNS、路由、TLS 握手、CDN 距离三重瓶颈;本地缓存则让重复安装(如重装、切分支)直接复用,跳过网络环节。

  • 运行 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • 确认缓存启用:composer config -g cache-dir,默认是 ~/.composer/cache,无需额外配置
  • 注意:某些私有包若未同步到镜像,需单独配置 repositories,否则会回退到官方源导致卡住

实在要“暂停”,用 git stash + vendor/ 临时保留更可靠

与其等 Composer 自己恢复,不如主动保存进度:把已下载解压好的 vendor/ 打包压缩,或用 git stash --include-untracked 暂存(前提是 vendor/ 未被 .gitignore 排除)。下次恢复时,解压回原位,再跑 composer install --no-scripts --no-plugins 补全剩余。

  • 慎用 composer dump-autoload 在中断后单独执行——它不检查包完整性,可能掩盖依赖缺失
  • vendor/ 目录权限、符号链接、windows 下长路径都可能让“续传”失败,比重新下载还麻烦

真正的瓶颈不在 Composer 命令本身,而在你连的是哪个源、缓存有没有生效、以及 vendor 目录是否被当成“中间产物”随意清理。

text=ZqhQzanResources