Laravel部署时composer install卡顿源于元数据拉取失败、ZIP包重复下载、autoload冗余三重问题;需启用全局缓存、配置阿里云镜像源,并执行composer install --no-interaction --prefer-dist --no-dev --optimize-autoloader。

Laravel部署时composer install卡在Downloading packages.json或Installing dependencies,本质是元数据拉取失败、ZIP包重复下载、autoload生成冗余三重叠加导致的安装延迟,不是框架本身问题。
确认并启用Composer全局缓存
缓存未启用或路径不可写,会导致每次install都重新下载全部ZIP包,vendor重建耗时翻倍。先验证当前状态:
运行composer config -g cache-dir,确保输出非空且路径存在(如/home/user/.composer/cache);若为空,执行composer config -g cache-dir ~/.composer/cache显式设置。
检查缓存是否实际生效:运行composer config -g cache-files-dir,输出应为有效路径;若为空,说明缓存被禁用,必须补上composer config -g cache-files-dir ~/.composer/cache/files。
【缓存目录权限错误是CI环境最常见失效原因】:在Docker或root用户下,~/.composer目录可能不可写,需手动chown -R $USER:$USER ~/.composer修复所有权。
强制走国内镜像源(必须验证)
90%的“卡在packages.json”问题源于直连packagist.org失败——DNS解析慢、TLS握手超时、CDN节点远,元数据拉不下来,后续步骤全阻塞。
执行配置命令:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
立即验证是否生效:composer config -g repo.packagist,输出必须严格为:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。
漏掉末尾/、键名错写成repos.packagist(多一个s)、第二参数误填git或空字符串,都会静默失效——此时命令无报错,但实际仍走官方源。
部署时必加的三个关键参数
仅配镜像和缓存不够,生产部署必须组合使用以下参数,跳过开发依赖、强制压缩包、预生成类映射:
第一步:进入项目根目录 → 第二步:执行composer install --no-interaction --prefer-dist --no-dev --optimize-autoloader。
【--no-dev不光跳过安装,还会让autoload完全忽略require-dev命名空间】:否则facade/ignition等开发包仍会注册服务提供者,引发未预期异常。
--optimize-autoloader把PSR-4映射转为静态数组,减少class_exists()时的文件扫描,实测autoload加载阶段提速30%以上;它和--no-dev必须同时使用才真正精简。
这一步操作起来很简单,直接把命令复制粘贴执行就行。

















