composer install 跳过 lock 校验需用 --ignore-platform-reqs --no-scripts --no-plugins,但推荐先 composer update --lock 同步锁文件;其变慢主因是插件、镜像源慢或 vendor 损坏,优化可用国内镜像、--no-dev、dump-autoload --optimize 等。
composer
install 时如何跳过自动更新检查
Composer 默认在
时会检查
是否与
一致,若不一致则报错并拒绝安装——这不是“自更新检查”,而是依赖锁定校验。真正让人误以为“卡住”的,常是插件(如
已弃用)或远程元数据拉取慢,而非 Composer 自身升级逻辑。
要跳过 lock 文件校验(仅限明确知道改动安全的 CI/临时调试场景),可用:
但更常见且安全的做法是先同步 lock 文件:
:只重写 lock 文件,不下载包(最快方式)
:预检是否匹配,不执行安装,便于排查不一致原因
若因修改了
(如改了 PHP 版本约束),必须先
或删 lock 后重生成
为什么 composer install 比 update 快,但有时还是慢
本应极快——它只读
并按记录解压 vendor,不走依赖解析。但以下情况会让它变慢:
启用了
(已废弃)或未清理的全局插件,会触发额外元数据请求
镜像源不可用,fallback 到 packagist.org,TLS 握手 + DNS 解析拖慢首请求
vendor 目录存在但部分包损坏,Composer 会逐个校验完整性(尤其开启
或使用
时)
PHP OPcache 未启用或配置过激(如
),导致每次加载 autoloader 都 stat 文件
验证是否为网络问题:加
看卡在哪一步,重点关注
类日志。
实测有效的速度优化组合命令
不依赖第三方插件(如旧版 prestissimo),纯官方机制提速:
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
强制国内镜像:
(注意:该镜像已停,推荐
)
禁用非必要功能:
(CI 场景下最有效)
加速 autoloader:
(生成完整 classmap,跳过 PSR-4 动态查找)
限制并发数防 DNS 打爆:
(避免默认 300 秒超时重试)
注意:
要求所有类必须在 classmap 中,否则运行时报
——适合全包由 Composer 管理的项目,不适合混用 require_once 的老项目。
composer global update 为什么会卡住,怎么绕开
卡住,90% 是因为全局包(如
、
)依赖树复杂,且默认启用
,递归更新全部子依赖。
安全又快的做法是精确控制:
查当前装了什么:
单独升级某一个:
(显式指定版本,避免隐式全量解析)
彻底清掉重装(适合调试):
(注意备份
)
禁用 packagist 全局搜索:
,只允许已知包源
global 命令本质是操作
,它的 lock 文件不受项目级影响,但插件和配置是全局共享的——一个插件异常,所有 global 操作都可能变慢。
installcomposer.lockcomposer.jsonhirak/prestissimocomposer install --ignore-platform-reqs --no-scripts --no-pluginscomposer update --lockcomposer install --dry-runcomposer.jsonupdate --lockinstallcomposer.lockfxp/composer-asset-pluginarchive-format--prefer-distopcache.validate_timestamps=1-vvvDownloading https://.../packages.jsoncomposer config -g repo.packagist composer https://packagist.phpcomposer.comhttps://mirrors.aliyun.com/composer/composer install --no-dev --no-scripts --no-autoloadercomposer dump-autoload --optimize --classmap-authoritativeCOMPOSER_PROCESS_TIMEOUT=600 composer install--classmap-authoritativeClass not foundcomposer global updatelaravel/installerphpunit/phpunit--with-dependenciescomposer global listcomposer global require laravel/installer:^5.0 --update-with-dependenciesrm -rf ~/.composer/vendor && composer global install~/.composer/composer.jsoncomposer global config -g repo.packagist false~/.composer/vendor