prefer-dist优先下载压缩包,适用于生产环境和快速部署,安装快且节省空间;prefer-source则克隆完整源码,适合开发调试和修改依赖,支持Git操作但占用更多资源。

在使用 Composer 管理 PHP 项目依赖时,prefer-dist 和 prefer-source 是两种不同的包安装策略,它们决定了 Composer 如何获取和安装依赖包。理解它们的差异和适用场景,有助于提升开发效率或部署稳定性。
prefer-dist:优先使用压缩包(发布版本)
当设置 prefer-dist 时,Composer 会优先从版本控制系统(如 Git)打好的发布包(dist)中下载依赖,通常是 ZIP 或 TAR 压缩文件。
适用场景包括:
- 生产环境部署:下载预构建的压缩包更快,不需要克隆整个代码仓库,节省时间和磁盘空间。
- 追求安装速度:dist 包是静态资源,CDN 加速效果好,安装更迅速。
- 不需要修改第三方源码:项目仅使用依赖功能,不涉及调试或定制源码。
- 构建流水线(CI/CD):可重复、稳定的构建过程,避免因 VCS 变动影响安装。
prefer-source:优先克隆源码仓库
启用 prefer-source 后,Composer 会通过 Git 等版本控制工具克隆完整的源码仓库来安装依赖。
适合以下情况:
- 开发调试第三方库:需要查看或修改某个依赖的源码,甚至在其内部打断点调试。
- 本地开发联动多个项目:你同时在开发主项目和某个私有包,通过源码方式便于实时测试更改。
- 提交补丁或贡献代码:需要基于源码提交 PR,保留 Git 历史以便操作。
- 使用 dev 分支或自定义分支:某些功能尚未发布为稳定 dist 包,只能通过源码安装。
如何设置这两种模式
可以在全局或项目级别的 composer.json 中配置:
"config": {
"preferred-install": {
"my/private-package": "source",
"*": "dist"
},
"prefer-dist": true,
"prefer-source": false
}
也可以通过命令行临时指定:
composer install --prefer-distcomposer install --prefer-source
此外,preferred-install 支持更细粒度控制,比如对特定包使用 source,其余用 dist。
基本上就这些。选择哪种方式,取决于你当前是处于快速部署阶段,还是深度开发调试阶段。合理使用,能显著提升工作效率。










