You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

composer.json中存在重复repositories键时,Composer会采用哪一个?

Composer处理重复repositories键的行为说明及修复方案

首先直接给你明确答案:当composer.json里出现重复的repositories键时,Composer会完全忽略前面的所有重复项,只使用最后出现的那个键对应的配置数组,不会对多个数组进行任何合并操作。

为什么你的包现在还能正常运行?

你看到composer validate报错是因为重复键不符合JSON规范(Composer对这种情况会严格提示错误),但实际运行时,Composer依赖的JSON解析器遵循“最后出现的键覆盖前面”的通用规则。所以你示例里的第一个repositories数组(包含foo仓库和禁用packagist的配置)其实根本没在生效,当前包的运行依赖的是第二个repositories数组里的配置。

重构方案(不改变运行行为)

根据你的需求,要删除未被使用的重复键,直接删掉第一个repositories键即可——因为它本来就没在生效,删除后完全不会影响现有运行行为,同时还能消除composer validate的错误。

如果之后你发现其实需要保留第一个数组里的配置(比如之前误以为这些配置在生效,但实际没有),那正确的做法是把两个repositories数组合并成一个,像这样:

{
  "name": "foo/bar",
  "description": "foo bar",
  "license": "Apache-2.0",
  "type": "library",
  "repositories": [
    {"type": "composer", "url": "foo"},
    {"packagist.org": false},
    { "type": "vcs", "url": "bar" }
  ],
  ...
}

内容的提问来源于stack exchange,提问作者John Walker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 20:54:06