--prefer-dist能提速因下载精简的压缩包而非完整git仓库,适用于已打tag的公开包;私有仓库需显式配置dist.url才生效,且composer install需重生成lock文件才能启用。

Composer 本身没有“导出格式”这个概念,所谓“切换格式加速导出”,实际是指控制依赖包的获取方式——--prefer-dist(下载压缩包) vs --prefer-source(克隆 Git 仓库)。绝大多数提速场景,本质是强制走 dist 模式。
为什么--prefer-dist能明显提速
大型包(如 laravel/framework、symfony/symfony)的 Git 仓库动辄几百 MB,含大量历史提交和分支;而 dist 包只打包当前 tag 对应的精简代码,体积小、解压快、网络 IO 压力低。
- 默认行为不可靠:Composer 会根据 lock 文件记录、包自身配置、环境变量(如
COMPOSER_PREFER_SOURCE)自动回退到 source,不显式指定就可能白配 - dist 不是“可选优化”,而是生产部署的底线要求:CI/CD 流水线卡在 downloading GitHub zip,90% 是因为没加
--prefer-dist - 注意:dist 加速只对已发布版本(tag)生效;若你 require 的是
"dev-master"或未打 tag 的私有包,Composer 只能 fallback 到 source
composer install 和 composer update 都要加
两者行为不同,但都受 --prefer-dist 控制:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer install:按composer.lock中记录的安装方式执行 —— 如果 lock 里存的是 source 记录,加参数也无效。必须先删 lock 再重装 -
composer update:重新解析依赖并生成新 lock,此时--prefer-dist才真正起效,决定新记录写入哪种模式 - 临时生效:直接加参数,例如
composer install --prefer-dist - 全局生效(推荐 CI 环境):
composer config -g preferred-install dist,等价于写入~/.composer/config.json的"preferred-install": "dist"
验证是否真走 dist 模式
不能只看命令有没有加参数,得看实际行为:
- 运行
composer install -vvv | grep "Downloading.*zip\|tar.gz",输出中应出现类似Downloading https://mirrors.aliyun.com/composer/dist/...的路径,且域名是镜像源,不是codeload.github.com - 检查
vendor/{vendor}/{package}目录下是否存在.git文件夹:有则说明走了 source;没有且目录结构干净,大概率是 dist - 查看
composer.lock中某个包的dist字段:"dist": {"type": "zip", "url": "https://...", "reference": "..."}—— 若type是zip或tar,就是 dist;若是type: "git",就是 source
最易被忽略的一点:--prefer-dist 对私有 GitLab/GitHub 私有仓库无效,除非你在 composer.json 的 repositories 里为它显式定义了 dist.url。否则无论怎么配,它都会 clone。










