prefer-dist 能显著提速Composer安装,因其优先下载预构建的dist压缩包而非克隆Git仓库;但私有源无dist时会失败,需结合国内镜像与并发下载进一步优化。

Composer 安装慢,核心原因不是网络差,而是默认启用了 prefer-source 或镜像未生效,prefer-dist 能显著提速——但不是所有场景都适用,开之前得看清楚。
为什么 prefer-dist 通常更快
Composer 默认会根据包的 dist(压缩包)和 source(Git 仓库)两种方式拉取依赖。dist 是预构建好的 zip/tar 包,直接下载解压;source 则要 clone 整个 Git 仓库再 checkout 版本,耗时高、体积大、还容易卡在 Git 协议或 SSH 认证上。
-
prefer-dist强制优先走 dist 链接,跳过 Git 操作,尤其对含大量历史提交或子模块的包效果明显 - 国内镜像(如阿里云、腾讯云)主要缓存的是
dist包,source基本不缓存,开了镜像却没开prefer-dist,等于白配 - CI/CD 环境里,
prefer-dist还能避免因 Git 配置缺失(如 no SSH key)导致的失败
如何全局启用 prefer-dist
执行一条命令即可,无需改配置文件:
composer config -g prefer-dist true
验证是否生效:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
composer config -g prefer-dist
输出 true 即成功。注意:-g 表示全局配置,影响所有项目;如果只想单个项目生效,去掉 -g 并在项目根目录下运行(会写入 composer.json 的 config 字段)。
- 已存在
"config": {"prefer-source": true}的项目,prefer-dist不会覆盖它——必须手动删掉prefer-source - 某些私有包只提供
source地址(比如内网 GitLab 未配置dist),强行prefer-dist会导致安装失败,报错类似:Could not find a matching version of package xxx - 开启后首次安装仍可能稍慢(要下载新 dist 包),但后续
composer install会明显快于之前
比 prefer-dist 更关键的加速点:镜像 + 并发
prefer-dist 是基础,但光靠它不够。真正卡顿常来自 DNS 解析、HTTPS 握手、单连接限速。必须配合:
- 换国内镜像源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 启用并发下载(Composer 2.2+):
composer config -g concurrent.http.max-parallel-downloads 10(默认是 3) - 关掉 xdebug(CLI 模式下
php -m | grep xdebug检查),它会让 Composer 解析composer.lock慢 3–5 倍 - 慎用
composer update:它会重新解析整个依赖树,比install慢得多;日常部署只用install
哪些情况不该开 prefer-dist
不是所有项目都能无脑开。典型例外:
- 开发中频繁改 vendor 里的代码,需要 Git 提交、调试断点——
source才带 .git 目录,dist是纯代码 - 依赖包本身没有发布
dist(比如 packagist 上某些个人小包只填了sourceURL) - CI 中需 patch vendor(如用
composer-patches),部分补丁工具依赖.git信息,dist下会失败 - 使用
pathrepository 类型时,prefer-dist会被忽略,但容易误以为“开了没用”
遇到安装报错先看日志里有没有 Downloading... 还是 Cloning...——前者走 dist,后者走 source,问题根源就在这儿。

















