项目级镜像必须写入composer.json的repositories对象(非数组),首位需设"packagist.org": false并配置合法镜像url,否则仍会fallback至官方源;改后须删vendor与composer.lock重装。

项目级镜像必须写进 composer.json 的 repositories 字段
项目局部镜像不读全局配置,也不认 ~/.composer/config.json,只认当前项目根目录下 composer.json 里的 repositories 结构。写错位置等于没配。
- 必须是
"repositories": { ... }对象形式(不是数组),且"packagist"要作为 key 出现在第一层 - 不能写成
"repositories": [ { "type": "composer", ... } ]—— 这种数组写法会被 Composer 忽略,命令行也拒绝解析 - 如果已有私有源(比如公司内网包),
"packagist"条目要放在最前面,否则它可能被跳过 - 手动编辑时务必校验 JSON 格式:末尾不能多逗号、引号必须是英文、
url值末尾不能带/
composer config repo.packagist 是安全写入的推荐方式
执行 composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加 -g)会自动在 composer.json 中生成合法的 repositories 对象,并合并已有内容,比手写更可靠。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 该命令只影响当前目录,不会波及其他项目
- 若原
composer.json已有"repositories": {},它会往里加"packagist"字段;若不存在,则新建整个对象 - 如果原
repositories是数组(如[{"type":"package",...}]),命令会失败,需先手动改为对象再运行 - 执行后记得删掉
vendor/和composer.lock,再跑composer install,否则旧 lock 文件仍指向官方源地址
必须显式禁用 packagist.org,否则镜像不生效
只配镜像 URL 不够,Composer 默认仍会把 packagist.org 当作兜底源参与请求,导致部分包从国外拉、部分从国内拉,甚至触发冲突错误。
- 在
repositories对象里加一条"packagist.org": false - 完整结构示例:
"repositories": { "packagist": { "type": "composer", "url": "https://mirrors.aliyun.com/composer" }, "packagist.org": false } - 注意
url值结尾不能有/,否则请求路径拼成/composerpackages.json,返回 404 - 如果项目依赖私有包(如自建 Satis 或 private-packagist),要把私有源写在
"packagist"后面,否则它可能被覆盖
验证是否真走镜像:看 composer install -vvv 的实际请求域名
别只信 composer config repo.packagist 的输出,那只是你“写了什么”;要看 Composer 实际发出去的 HTTP 请求。
- 运行
composer clear-cache && composer install -vvv - 在日志中搜索
Downloading,确认出现的是https://mirrors.aliyun.com/composer/packages.json - 如果看到
https://packagist.org/packages.json或https://repo.packagist.org/packages.json,说明配置被绕过了——大概率是composer.json里漏了"packagist.org": false,或存在其他repositories数组干扰 - CI/CD 环境(如 GitHub Actions)默认不加载用户级全局配置,但会读项目级
composer.json,所以项目级配置更适合提交进 Git
"packagist.org": false 这一行有没有、位置对不对、JSON 格式严不严格——这三个点漏掉任何一个,都可能导致一半请求走国内、一半卡在国外,问题反而更难定位。










