composer的 “Classmap generation completed” 过程太慢怎么办
发布时间 - 2025-10-18 00:00:00 点击率:次优化 Composer autoloader 生成速度需从配置入手:1. 检查 classmap 路径,仅保留必要目录如 src/;2. 推荐改用 PSR-4 自动加载,避免全量扫描;3. 使用 exclude-from-classmap 排除 Tests、examples 等无关目录;4. 清理未使用依赖,生产环境使用 --no-dev 安装;5. 升级至 Composer 2.x 以获得更快的生成性能。核心是减少扫描文件数量。
Composer 在执行 autoloader 生成时,如果提示 “Classmap generation completed” 耗时太久,说明它正在扫描大量文件来构建类映射。这个问题通常出现在项目或依赖中存在大量非必要文件(如测试、文档、示例代码)被包含进 classmap 扫描路径的情况。
1. 检查并优化 classmap 配置
Composer 默认会根据 autoload.classmap 和 autoload.files 配置扫描指定目录。如果你手动添加了大目录(如整个 vendor 或测试目录),会导致性能下降。
建议只包含实际需要的目录:
- 确认 composer.json 中 autoload.classmap 只列出必要的目录,比如
src/ - 避免将
tests/、vendor/、examples/等加入 classmap - 如果只是加载函数文件,使用
"files": ["helpers.php"]更高效
2. 使用 psr-4 替代 classmap(推荐)
PSR-4 是按命名空间自动推导路径,不需
要扫描所有文件,速度快得多。
将你的代码从 classmap 迁移到 PSR-4:
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
迁移后运行:
composer dump-autoload
你会发现 classmap 生成速度显著提升,甚至不再出现长时间等待。
3. 排除不必要的包文件(利用 exclude-from-classmap)
很多第三方库自带测试或样例,Composer 默认可能仍会扫描它们。你可以主动排除:
{
"autoload": {
"psr-4": {
"App\\": "src/"
},
"exclude-from-classmap": [
"*/Tests/",
"*/tests/",
"*/Test/",
"*/Examples/",
"*/examples/",
"*/vendor-bin/"
]
}
}
这样 Composer 在生成 autoload 时会跳过这些目录,大幅减少扫描文件数。
4. 清理未使用的依赖或开发包
过多的 require-dev 包(如 phpunit、mockery、phpstan)也会影响 autoloader 生成速度,尤其是它们自身包含大量类文件。
- 确认生产环境不安装 dev 依赖:
composer install --no-dev - 定期审查并移除无用依赖:
composer remove package/name
5. 启用 Composer 2.x 并更新到最新版本
Composer 2.x 的 autoloader 生成比 1.x 快数倍。确认你使用的是新版:
composer --version
如果不是 2.x 或更高,请升级:
composer self-update
基本上就这些。通过改用 PSR-4、排除无关目录、清理依赖和升级 Composer 版本,classmap 生成慢的问题基本都能解决。关键是不让 Composer 扫描它不需要看的文件。
# composer
# php
# js
# json
# app
# 命名空间
# require
# 不需
# 的是
# 如果你
# 也会
# 你可以
# 尤其是
# 都能
# 出现在
# 长时间
# 这个问题
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
Firefox Developer Edition开发者版本入口
高性价比服务器租赁——企业级配置与24小时运维服务
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
黑客入侵网站服务器的常见手法有哪些?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
JavaScript模板引擎Template.js使用详解
Laravel如何配置Horizon来管理队列?(安装和使用)
Laravel怎么在Blade中安全地输出原始HTML内容
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
大同网页,大同瑞慈医院官网?
如何在万网自助建站平台快速创建网站?
北京企业网站设计制作公司,北京铁路集团官方网站?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
如何彻底卸载建站之星软件?
油猴 教程,油猴搜脚本为什么会网页无法显示?
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
香港服务器租用每月最低只需15元?
如何用JavaScript实现文本编辑器_光标和选区怎么处理
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
网站制作软件有哪些,制图软件有哪些?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
如何快速搭建高效WAP手机网站?
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
Android滚轮选择时间控件使用详解
C#如何调用原生C++ COM对象详解
JavaScript如何实现继承_有哪些常用方法
如何快速上传建站程序避免常见错误?
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
公司门户网站制作流程,华为官网怎么做?
5种Android数据存储方式汇总
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
Laravel如何实现一对一模型关联?(Eloquent示例)
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
香港服务器网站推广:SEO优化与外贸独立站搭建策略
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
Laravel如何实现数据库事务?(DB Facade示例)
JS去除重复并统计数量的实现方法
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
JS碰撞运动实现方法详解

