镜像配置未生效是提速失败的主因,需检查repo.packagist拼写、URL末尾斜杠、项目级repositories屏蔽及config输出是否为完整JSON;scripts默认不加载autoload,须手动引入;parallel-downloads仅加速install下载,不影响scripts执行。

镜像配置没生效,脚本再快也没用
所有提速的前提是镜像真正在用。很多人执行了 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 就以为搞定,结果 composer install 还是卡在 Downloading xxx。根本原因不是网络差,而是配置静默失败:
-
repo.packagist写成repos.packagist(多一个 s),Composer 完全忽略,不报错也不提示 - URL 末尾缺斜杠:
https://mirrors.aliyun.com/composer❌ 会返回 404;必须是https://mirrors.aliyun.com/composer/✅ - 项目级
repositories字段存在(哪怕空对象{})就会屏蔽全局镜像,优先级永远是:项目级 > 全局 > 默认源
验证是否生效:运行 composer config -g repo.packagist,输出必须是完整 JSON,形如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"};空、null 或报错,说明压根没写进去。
scripts 里调用命令,autoload 默认不加载
你在 composer.json 的 scripts 里写了个 PHP 脚本,运行 composer run my-script 却报 Class not found?这不是 bug,是设计行为——Composer 执行 scripts 时默认不自动 require vendor/autoload.php。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 脚本若放在项目根目录,第一行必须加:
require __DIR__ . '/vendor/autoload.php'; - 若脚本在
scripts/目录下,路径要上溯一级:require __DIR__ . '/../vendor/autoload.php'; - 推荐加防护判断:
if (!class_exists('Composer\Autoload\ClassLoader')) { die('autoload not loaded'); } - 别用
include或依赖已废弃的__autoload
parallel-downloads 对 scripts 没影响,但对 install 至关重要
parallel-downloads 是 Composer 2.2+ 才真正起作用的配置,它只加速 composer install 阶段的包下载,并不提升 scripts 执行速度。很多人误以为开了并发就能让自定义脚本变快,其实完全无关。
- 默认值是 3,相当于单车道;建议设为 8:
composer config -g parallel-downloads 8 - 设为 10 容易触发临时文件竞争,典型错误:
file_put_contents(/tmp/): failed to open stream - 该设置对
composer update几乎无效——依赖解析本身是串行图算法,无法并行 - 镜像未生效时,并发根本无从谈起,直接退化为单连接
scripts 和 exec 不是替代关系,是分工协作
composer exec 和 scripts 解决的是不同问题。硬要把它们混用,反而容易踩坑。
-
composer exec phpunit:临时调试,自动找vendor/bin/phpunit,不用提前定义,适合个人快速操作 -
"test": "phpunit"写进scripts:团队标准化流程,可绑定post-install-cmd,支持参数传递和组合命令 -
scripts中可写复杂 shell 链:"build": ["rm -rf build/", "mkdir build", "cp -r src/ build/"];exec只适合单个二进制 - Windows 用户注意:
composer run-script ci:lint会失败,必须加双引号:composer run-script "ci:lint"
镜像和脚本效率之间没有直接关联,但镜像失效会让所有后续步骤(包括 scripts 中调用的远程命令)变慢;而 scripts 设计不当,则会让本地开发流变得不可靠——这两类问题常被混为一谈,实际排查时得分开盯。

















