prefer-dist优先下载压缩包,适合生产环境,安装快、占用小;prefer-source则克隆完整源码,便于开发调试,但占空间大。可通过命令行或composer.json的preferred-install配置,建议生产用dist,开发用source,配合path本地开发时需设为source。

在使用 Composer 安装或更新 PHP 依赖时,可以通过配置 prefer-dist 或 prefer-source 来控制依赖包的获取方式。这两种模式直接影响依赖是如何下载和存储到项目中的。
prefer-dist:优先从压缩包安装
启用 prefer-dist 时,Composer 会优先从版本控制系统(如 Git)打好的发布包(如 tar.gz 或 zip 压缩文件)下载依赖。
这些压缩包通常由包维护者在发布 tag 时自动生成,托管在 Packagist 或 GitHub 等平台。
- 下载的是预构建的静态文件,不包含版本控制历史(如 .git 目录)- 安装速度快,适合生产环境
- 占用磁盘空间小
- 无法直接修改源码或提交更改
- 是 Composer 的默认行为(除非特别设置)
适用于:
- 生产环境部署,追求快速、稳定、轻量
- 不需要修改第三方库代码的常规开发
- CI/CD 流程中自动构建
prefer-source:优先从源码克隆
启用 prefer-source 时,Composer 会通过 Git(或其他 VCS)完整克隆项目的源码仓库,包括所有提交历史和分支信息。
- 可以直接修改依赖源码、切换分支、打补丁
- 占用更多磁盘空间,下载较慢
- 适合调试、定制或贡献开源项目
适用于:
- 需要调试或修改某个依赖库的内部逻辑
- 正在为某个开源项目贡献代码,需频繁切换分支
- 本地开发中测试未发布的功能分支
- 配合 path 资源库进行本地开发联动
如何设置 prefer-dist 和 prefer-source
可以在命令行中临时指定:
composer install --prefer-dist
composer install --prefer-source
也可以在 composer.json 中全局配置:
"config": {
"preferred-install": {
"my/package": "source",
"*": "dist"
}
}上面配置表示:除 my/package 外,其他包都优先使用 dist 方式安装。
实际使用建议
开发环境可适当使用 --prefer-source,便于深入调试依赖;生产环境始终推荐 --prefer-dist,保证效率和一致性。
若你在本地开发一个组件,并通过 path 方式引入另一个项目,那么设为 source 是必要的,否则无法实时同步更改。
基本上就这些。合理利用这两个选项,能显著提升开发和部署体验。










