项目级 repositories 必须是数组且首项为 {"packagist.org": false},否则 Composer 2.2+ 会静默回退至官方源导致混源;需删除 vendor 和 composer.lock 后执行 composer install,并清空全局镜像配置。

项目级 repositories 必须是数组且首项为 {"packagist.org": false}
Composer 2.2+ 把 packagist.org 当作硬编码源,只加镜像 URL 不会禁用它。不显式关掉,一旦镜像返回 404 或超时,就会静默 fallback 到官方源——结果部分包走阿里云、部分走海外,composer.lock 里混着两种 dist URL,CI 构建失败或本地安装行为不一致。
-
"repositories"必须是数组([]),写成对象({})会被完全忽略 - 第一项必须是独立的
{"packagist.org": false},不能合并进第二项(比如{"packagist.org": false, "type": "composer", "url": "..."}是无效的) - 第二项起才是镜像源,
url值末尾必须带/,例如https://mirrors.aliyun.com/composer/,少斜杠会导致请求路径拼错成/composerpackages.json,直接 404 - 私有 VCS 源(如 GitLab 私库)可以插在第二项之后,但不能删掉首项
改完 composer.json 后必须删 vendor 和 composer.lock
composer.lock 里存的是旧配置下生成的完整 dist URL(比如 https://api.github.com/...),Composer 安装时优先读 lock 文件,根本不会重新解析 repositories 配置。只跑 composer update 没用,包还是从 packagist.org 下。
- 必须手动执行:
rm -rf vendor composer.lock,再跑composer install(不是update) - CI 脚本里要加清理步骤,否则缓存会复用旧 lock,导致每次构建都走错源
- 别信
composer update --dry-run的输出,它不验证元数据源是否生效
全局镜像必须清空,避免和项目配置冲突
只要项目 composer.json 中定义了 repositories 数组,Composer 就会忽略全局的 repo.packagist 配置。但问题在于:有人可能全局配了镜像,又在项目里写了另一个,结果 composer require 等命令因上下文不同读取逻辑不一致,引发混用。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 团队应统一执行:
composer config --global --unset repo.packagist - 验证是否清空:
composer config --global repo.packagist输出应为空或https://packagist.org(即恢复默认) - CI 脚本开头加一句
composer config --global --unset repo.packagist,防止单独配置残留
composer config -g repo.packagist 命令的三要素缺一不可
这条命令看着简单,漏任意一个都会静默失效,不报错也不提示——你敲完以为配好了,其实什么都没写进去。
-
-g不能省,否则只改当前目录下的composer.json,换项目就失效 - 键名必须是
repo.packagist(单数repo),写成repos.packagist或mirror都无效 - 中间的
composer是type值,不是注释,不能省;省略后 Composer 2.x+ 会 fallback 到默认源 - URL 必须用 HTTPS,且末尾必须带
/,例如https://mirrors.aliyun.com/composer/
验证是否生效:composer config -g repo.packagist 应输出类似 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。如果返回空、null 或报错,说明没写对。

















