0

0

composer怎么使用prefer-source_composer强制下载源码包方法

尼克

尼克

发布时间:2026-02-12 17:55:03

|

452人浏览过

|

来源于php中文网

原创

prefer-source 是让 composer 从 vcs 克隆源码而非下载压缩包的配置,用于调试、打补丁或使用未发版的 dev 分支;可临时(命令行参数)、项目级(composer.json)或全局(--global)启用,但需注意私有仓库权限、ci 性能及 .git 清理问题。

composer怎么使用prefer-source_composer强制下载源码包方法

prefer-source 是什么,什么时候必须用它

它不是强制下载源码的开关,而是告诉 composer installcomposer update:「如果包提供了 VCS 仓库(比如 GitHub),就直接 clone 源码,别下 zip 包」。默认行为是下 dist(压缩包),速度快、缓存友好;但你改代码、打 patch、看 commit 历史、或包没发布新 tag 却需要最新 dev 分支时,就得切到 source 模式。

全局启用 prefer-source 的两种写法

最常用的是改配置项,不是加参数。很多人误以为 composer install --prefer-source 能永久生效,其实它只对当次命令有效,且不会影响后续 composer update —— 因为 Composer 默认会把已安装的包按原方式复用(dist 或 source),除非显式要求刷新。

  • 临时生效(仅本次命令):composer install --prefer-sourcecomposer update --prefer-source
  • 永久生效(项目级):在 composer.json 根对象里加 "config": { "prefer-source": true }
  • 永久生效(全局):运行 composer config --global prefer-source true,影响所有后续项目

prefer-source 和 --dev / --no-dev 的关系

它们互不干扰。--dev 控制是否安装 require-dev 下的包;prefer-source 控制「怎么装」——哪怕只装生产依赖,只要开了 prefer-source,monolog/monolog 这类包照样会 git clone。但要注意:有些私有包没开 public Git 访问,或公司防火墙屏蔽 git:// 协议,这时 prefer-source 会卡在 Cloning into 'xxx'... 并报错 fatal: Could not read from remote repository.

Inworld.ai
Inworld.ai

InWorldAI是一个AI角色开发平台,开发者可以创建具有自然语言、上下文意识和多模态的AI角色,并可以继承到游戏和实时媒体中

下载
  • 常见错误现象:Failed to download vendor/package: Failed to execute git clone --no-checkout ...
  • 排查路径:先确认该包的 source 字段是否在 packagist.org 上可见(点进包页 → 「Source」tab)
  • 若用私有 Packagist(如 Satis),需确保其 repositories 配置中 type 是 composer 且支持 source 同步

源码模式下 vendor 目录变大的真实代价

一个 symfony/console dist 包约 150KB,source 模式下带完整 .git 目录可能超 10MB。CI 构建时如果每次都 --prefer-source,拉取时间、磁盘占用、缓存失效概率都会明显上升。更隐蔽的问题是:某些部署脚本会递归删除 .git,结果导致下次 composer update 失败 —— 因为 Composer 检测到目录里有 .git,就认定这是 source 模式安装的,但 .git 又被删了,校验失败。

  • CI 场景建议:一律用 dist(默认),除非调试需要;可用 composer install --no-dev --optimize-autoloader 配合缓存加速
  • 开发机可开 prefer-source,但记得定期 git clean -xffd vendor/ 清理残留 .git(慎用,先备份)
  • 不要在 composer.json 里长期开着 "prefer-source": true 提交到主分支,尤其团队协作时

真正难处理的不是怎么开 prefer-source,而是它和私有仓库权限、CI 网络策略、部署清理逻辑混在一起时,错误信息往往只报「clone 失败」,实际得一层层查 SSH key、HTTPS token、git config url 重写规则。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
PHP Symfony框架
PHP Symfony框架

本专题专注于PHP主流框架Symfony的学习与应用,系统讲解路由与控制器、依赖注入、ORM数据操作、模板引擎、表单与验证、安全认证及API开发等核心内容。通过企业管理系统、内容管理平台与电商后台等实战案例,帮助学员全面掌握Symfony在企业级应用开发中的实践技能。

82

2025.09.11

composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

158

2023.12.25

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

436

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

544

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

317

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

81

2025.09.10

require的用法
require的用法

require的用法有引入模块、导入类或方法、执行特定任务。想了解更多require的相关内容,可以阅读本专题下面的文章。

475

2023.11.27

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6362

2023.09.14

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

4

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十四期_PHP8编程
第二十四期_PHP8编程

共86课时 | 3.4万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.5万人学习

第二十三期_PHP编程
第二十三期_PHP编程

共93课时 | 7.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号