直接换阿里云镜像源+清缓存+加--prefer-dist --no-dev --optimize-autoloader --no-interaction四参数,可使composer create-project从卡住变为秒级完成;卡在“Installing dependencies”实为默认直连packagist.org导致元数据请求失败重试,需严格验证镜像配置、缓存路径及GitHub Token。

直接换阿里云镜像源 + 清缓存 + 加四个关键参数,composer create-project laravel/laravel 从卡住变秒出 vendor 是常态,不是玄学。
为什么 create-project 卡在 “Installing dependencies”?
这不是 Laravel 慢,是 Composer 在反复请求 packages.json 和 provider-laravel~11.0.json 这类元数据——默认直连 packagist.org,DNS 解析慢、TLS 握手失败、CDN 节点远,国内成功率常低于 40%。哪怕单次请求失败,就会重试 3–5 轮,叠加 Laravel 的 80+ 依赖,耗时自然飙升。
常见错误现象包括:Could not fetch packages.json、Connection timed out、日志里大量 GET https://repo.packagist.org/ 请求。
- 别信“我执行过配置”,只看
composer config -g repo.packagist输出是否为完整 JSON:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 输出为空、
null、https://packagist.org或报错,说明根本没生效 - 漏掉 URL 末尾的
/、写成repos.packagist(多一个 s)、没写composer作为 type 值,都会静默失效
composer config -g repo.packagist 怎么配才真正生效?
必须三要素齐备:键名准确、type 显式声明、URL 格式严格。配错一个,就等于白配。
- 正确命令:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(注意末尾斜杠不能少) - 验证是否启用缓存:
composer config -g cache-files-dir必须输出路径(如~/.composer/cache/files),否则缓存未开 - 补上缓存 TTL:
composer config -g cache-files-ttl 3600,防旧缓存误用 - 换源后必须清缓存:
composer clear-cache,否则 Composer 仍会尝试从旧地址拉元数据
如果之前手动改过 ~/.composer/config.json,-g 参数就是操作这个文件,优先级最高。
create-project 还是慢?GitHub 限流才是真瓶颈
create-project 分两步:先拉 GitHub 上的 Laravel 模板(走 GitHub API),再进目录跑 composer install(才走镜像)。很多人卡在第一步,其实是 GitHub 限流,跟镜像无关。
- 配 GitHub Token:
composer config -g github-oauth.github.com your_token_here - 或跳过 installer,直接克隆:
git clone --depth=1 https://github.com/laravel/laravel.git myapp,再进目录composer install - 临时加 hosts 解析异常:
140.82.112.4 api.github.com - 别用
--repository-url或--mirror——Composer 不识别,会静默忽略;要用就用--repository=https://mirrors.aliyun.com/composer/
安装命令必须带哪四个参数?
create-project 本质是一次完整的 composer install,生产级优化参数同样适用:
-
--prefer-dist:强制走 ZIP 包下载,跳过git clone和 submodule 同步(实测快 2–5 倍) -
--no-dev:新项目初始化阶段完全不需要phpunit、laravel/pint等开发依赖 -
--optimize-autoloader:生成静态类映射,减少后续 autoload 阶段文件扫描 -
--no-interaction:避免交互式提示阻塞自动化流程
最终命令示例:composer create-project laravel/laravel demo --prefer-dist --no-dev --optimize-autoloader --no-interaction --repository=https://mirrors.aliyun.com/composer/
缓存路径、镜像 URL、GitHub Token、四个参数——这四点任意一个没对齐,速度就回不到“秒级”。尤其 cache-files-dir 为空和 repo.packagist 键名写错,是最常被忽略的两个硬伤。


















