drupal项目composer依赖慢的根本原因是未按vcs→composer→composer顺序配置混合源,且必须将"packagist.org": false置于根级并清理vendor与composer.lock。

Drupal项目用 Composer 拉依赖慢,不是镜像源加得不对,而是根本没按 Drupal 的混合源规则来配——私有模块、国内镜像、packagist.org 三者必须严格分层、类型明确、顺序固定,否则不是拉不到 private 包,就是卡在超时重试。
为什么composer config repo.packagist对Drupal无效
这条命令只能设一个 packagist 类型源,且会覆盖之前所有配置。Drupal 项目通常要同时处理三类包:
-
drupal/core走阿里云镜像(快、同步及时) -
acme/private-module走内网 GitLab(type 必须是vcs) -
symfony/yaml这种冷门包可能还没同步,得 fallback 到packagist.org
用 composer config repo.packagist 只能塞一个 URL,第二条就覆盖第一条,vcs 源还直接报错 Invalid repository type。
repositories 数组必须按 vcs → composer → composer 顺序写
顺序即优先级,Composer 从左到右逐个查,命中即停。错误写法是把 packagist.org 放最前,或混写 vcs 和 composer 类型。
- 私有 Git 源必须用
"type": "vcs",URL 是可git clone的地址,比如https://gitlab.internal.acme.com/modules/drupal-private-module.git,不是网页链接 - 国内镜像选阿里云(
https://mirrors.aliyun.com/composer/)比腾讯云更稳,CDN 节点多、同步延迟低 - 兜底的
packagist.org必须保留,但要放最后,且 URL 写完整https://packagist.org/,不能省略协议
"packagist.org": false 必须是根级字段,不能塞进 repositories
这个字段控制是否允许 Composer 自动 fallback 到官方源。如果它被误写在 repositories 数组里,或者干脆漏掉,Composer 仍会偷偷连 packagist.org,导致私有包拉取失败或等满 30 秒超时。
- 它和
repositories同级,不是子项,位置在require上方即可 - 删掉
vendor和composer.lock再composer install,否则旧 lock 文件里的 dist URL 还指向官方源 - 执行
composer show -p可验证当前生效的源:看到vcs和两个composer源,且没有packagist自动启用提示,才算成功
最容易被忽略的是 "packagist.org": false 的位置和 composer.lock 的清理——改完 composer.json 不删 lock 文件,等于白配;漏掉这行顶层字段,等于开了后门让 Composer 绕过你的镜像策略。











