答案是:composer config -g repo.packagist 不生效主因是键名(必须单数 repo.packagist)、type 值(必须显式填 composer)、URL(必须 HTTPS 且末尾带 /)三者缺一不可,任一错误即静默回退官方源;验证需输出完整 JSON,如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。

国内用 Composer,不配镜像、不清缓存、不设 prefer-dist,等于没装——首次 composer install 卡在 Downloading 或反复报 Could not fetch packages.json 是必然结果。
为什么 composer config -g repo.packagist 总是不生效
不是命令错了,是三个细节全得对上:
-
repo.packagist不能写成repos.packagist(多一个s就完全忽略) - 第二个参数必须是
composer(这是仓库类型声明,漏掉会 fallback 到官方源) - URL 必须以
https://开头,且末尾带且仅带一个/:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌
验证是否写对:运行 composer config -g repo.packagist,输出应为完整 JSON,形如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。如果为空、null 或只显示 URL 字符串但不含 type,说明没生效。
parallel-downloads 设多少才安全又高效
默认并发数是 5,对国内镜像太保守;设太高又容易触发 DNS 超时或 file_put_contents(/tmp/): failed to open stream 错误。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Composer 2.2+ 才支持该配置,1.x 版本设了也无效——先执行
composer self-update - 实测 10–15 是安全区间:
composer config -g parallel-downloads 10 - CI 环境中若报
Connection refused,优先降为 6 再试 - 它只加速 tarball 下载,不影响元数据检索,所以必须和镜像源配合才明显
CI/CD 中 composer install 必加的参数组合
本地开发可以容忍慢,但 CI 构建里每秒都算钱。不带关键参数,等于主动浪费资源。
-
--no-dev:跳过require-dev,省掉 30%–60% 时间 -
--prefer-dist:强制下 ZIP 包,避免 Git clone、SSH 认证、分支切换等开销 -
--no-autoloader:跳过 autoload 生成(后续由构建脚本统一处理) -
--no-scripts:跳过 post-install-cmd 等钩子(部署阶段通常不需要)
组合示例:composer install --no-dev --prefer-dist --no-autoloader --no-scripts。注意:别加 --optimize-autoloader 或 --classmap-authoritative,它们依赖完整 autoload 结构,CI 阶段提前生成反而可能出错。
项目级配置比全局更可控,但别用命令覆盖已有 repositories
执行 composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加 -g)会**全量替换**当前项目的 composer.json 中的 repositories 字段,不是追加。
- 如果你原本已配了私有 Git 源或 Satis 源,这条命令会直接清空它们
- 已有
"repositories": { "my-private": { "type": "vcs", ... } }?别跑命令,手动编辑composer.json,在repositories里加一条"packagist": { "type": "composer", "url": "https://mirrors.aliyun.com/composer/" } - 同时确保根节点写上
"packagist.org": false(非repositories内部),否则私有源 + 镜像共存时可能冲突
真正卡点常藏在缓存、插件和项目自身“不配合”——比如 composer.json 里写了 "prefer-source": true,它会覆盖全局 prefer-dist,必须手动删掉;又或者用了未配置 dist 地址的私有仓库,prefer-dist 会直接报 Could not find a matching version of package xxx。

















