"exclude-from-classmap" 仅影响 classmap 自动加载,用于排除指定路径不写入类映射缓存;需置于 autoload 对象内,支持 和 * 通配符,路径末尾加 / 推荐以明确匹配目录。

在 composer.json 中,可以通过 "exclude-from-classmap" 配置项来排除某些文件或目录,防止它们被 Composer 的自动加载机制(尤其是 classmap 生成)扫描和加载。
这个配置只影响 "classmap" 类型的自动加载(包括通过 composer dump-autoload --optimize 生成的优化类映射),对 psr-4、psr-0 或 files 加载方式无效。它不是“禁止加载”,而是“不把它们写进 classmap 缓存里”。
值必须是字符串数组,每个元素是相对于项目根目录的路径,支持 * 和 **:
* 匹配当前层级任意文件或目录名(不递归)** 匹配任意层级的子目录(递归)/ 表示只匹配目录(推荐,避免误伤同名文件)比如你想排除测试文件、文档、资源目录等,可以这样写:
"autoload": {
"classmap": ["src/", "lib/"],
"exclude-from-classmap": [
"tests/",
"docs/",
"resources/",
"examples/",
"*/Test.php",
"src/Deprecated/**"
]
}注意:"exclude-from-classmap" 必须放在 "autoload" 对象内,不能放在顶层。
修改后需重新生成自动加载文件:
composer dump-autoload(开发时)composer dump-autoload -o
vendor/composer/autoload_classmap.php,确认被排除的路径没出现在数组中如果仍被加载,可能是其他 autoload 规则(如 psr-4)覆盖了,或文件本身被 files 直接引入了。
基本上就这些。不复杂但容易忽略路径是否带斜杠、是否在正确层级,以及它只管 classmap 这一条路。
以上就是如何在composer.json中排除某些文件或目录被自动加载?(exclude-from-classmap)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号