运行 composer dump-autoload -o 可在不安装/更新依赖的前提下,重新生成优化的自动加载文件;它将 PSR-4/PSR-0 映射转为 classmap 并合并 files 脚本,提升加载速度,适用于手动修改 autoload 配置或新增类文件后同步。

直接运行 composer dump-autoload -o 即可,在不安装、不更新任何依赖的前提下,仅重新生成优化后的自动加载文件(即 vendor/autoload.php 及其底层的 classmap)。
为什么需要这个操作?
当你手动修改了 composer.json 中的 autoload 配置(比如新增了 psr-4 映射、调整了 files 列表),或新增/移动了类文件但没改依赖版本时,Composer 不会自动感知。此时运行 dump-autoload 是最轻量的同步方式。
-o 选项的实际效果
它会启用「优化模式」,主要做两件事:
- 将 PSR-4/PSR-0 映射转为静态 classmap,跳过动态路径解析,提升加载速度
- 合并所有
files类型的全局引入脚本到一个列表,避免重复 require
注意:-o 不等价于 --optimize-autoloader(两者是同一选项的不同写法),也不需要 --no-dev —— 若想排除 dev-only 的 autoload 规则,才需额外加该参数。
常见配合用法
- 仅优化 autoload(保留 dev 配置):
composer dump-autoload -o - 优化且忽略 dev autoload(生产环境常用):
composer dump-autoload -o --no-dev - 强制重生成(绕过缓存检查):
composer dump-autoload -o --force
验证是否生效
生成后可快速确认:
- 查看 vendor/composer/autoload_classmap.php 文件是否被更新(有实际类名映射内容)
- 运行 php -r "require 'vendor/autoload.php'; var_dump(class_exists('Your\\Class'));" 测试能否正确加载
基本上就这些。不复杂但容易忽略——尤其在 CI 或部署脚本里,漏掉 -o 可能导致类加载变慢或找不到新类。










