如何在 Composer 中使用 –prefer-dist 和 –prefer-source 选项?

1次阅读

–prefer-dist 用于生产环境,下载预构建压缩包,安装快、占空间小;–prefer-source 用于开发调试,克隆完整 git 仓库,支持修改和提交。

如何在 Composer 中使用 –prefer-dist 和 –prefer-source 选项?

composer 中,--prefer-dist--prefer-source 是控制依赖包安装方式的两个关键选项,它们影响的是包的获取来源和本地存储形式,直接关系到安装速度、磁盘占用和后续开发便利性。

什么时候用 –prefer-dist?

这是 Composer 的默认行为,适用于大多数生产环境或普通使用场景。它会优先从包的发布版本(如 github 的 Release ZIP 包、Packagist 提供的压缩包)下载预构建的归档文件。

  • 安装更快:跳过 Git 克隆和历史检出,直接解压二进制包
  • 占用空间更小:不含 Git 元数据和开发分支历史
  • 适合部署:包内容稳定、可预期,不依赖远程仓库可用性
  • 执行命令:composer install --prefer-distcomposer update --prefer-dist

什么时候用 –prefer-source?

当你需要修改依赖源码、调试底层逻辑、或贡献补丁时,应使用该选项。它会通过 Git(或其他 VCS)克隆整个代码仓库到 vendor/ 目录下,并保留完整提交历史和分支信息。

  • 支持本地修改和提交:可直接在 vendor/xxx 中改代码、打补丁、切分支
  • 便于调试和跟踪:能用 git blamegit log 查看变更来源
  • 适合开发阶段或维护 fork:例如你正在为某个包提 PR,需基于其 dev-main 分支开发
  • 执行命令:composer install --prefer-source(注意:首次安装后,后续 composer update 默认仍走 dist,除非显式指定)

如何设置为项目默认行为?

不必每次输入参数,可在项目根目录的 composer.json 中配置:

  • 全局设为 prefer-dist:"config": { "preferred-install": "dist" }
  • 全局设为 prefer-source:"config": { "preferred-install": "source" }
  • 按包类型区分(推荐):"preferred-install": { "*": "dist", "dev-*": "source" } —— 比如让所有 dev 包走 source,稳定版走 dist

一个小提醒:–prefer-source 不等于 –dev

这两个选项无关:--dev 控制是否安装 require-dev 中的包;而 --prefer-source 只决定已选包的获取方式。即使你不装 dev 包,也可以对正式依赖启用 source 安装。

基本上就这些。选哪个不复杂,但容易忽略背后的实际影响——要快就 dist,要改就 source。

text=ZqhQzanResources