mcaskill / composer-exclude-files
从 autoload_files.php 中排除文件
v4.0.0
2024-05-19 18:19 UTC
Requires
- php: ^7.2.5 || ^8.0
- composer-plugin-api: ^2.3
Requires (Dev)
- composer/composer: ^2.3
- phpstan/phpstan: ^1.7
- symfony/phpunit-bridge: ^6.0
README
这是一个 Composer 插件,用于通过 files 自动加载机制排除包所需的文件。
这对于忽略用于启动包或提供 PHP 函数等的文件很有用。
安装
此插件可以本地或全局安装。
composer require mcaskill/composer-exclude-files
从 Composer 2.2.0 开始,为了额外的安全,您应该声明 allow-plugins 配置以允许 Composer 运行插件。
composer config allow-plugins.mcaskill/composer-exclude-files true
使用方法
您只能从根
composer.json中忽略文件。依赖项的composer.json中的文件排除被忽略。
从根 composer.json 开始,将 exclude-from-files 属性添加到 extra 部分。路径列表必须相对于此 Composer 清单的 vendor 目录: <vendor-name>/<project-name>/<file-path>。
此插件支持 glob() 函数 中使用的特殊字符子集,以匹配排除路径的模式
*— 匹配零个或多个字符。?— 匹配恰好一个字符(任何字符)。
此插件在自动加载器被导出之前被调用,例如使用 install、update 和 dump-autoload 命令。
示例 1:从 illuminate/support 中排除一个文件
{
"require": {
"illuminate/support": "^9.6"
},
"extra": {
"exclude-from-files": [
"illuminate/support/helpers.php"
]
},
"config": {
"allow-plugins": {
"mcaskill/composer-exclude-files": true
}
}
}
示例 2:从 laravel/framework 中排除多个文件
{
"require": {
"laravel/framework": "^9.6"
},
"extra": {
"exclude-from-files": [
"laravel/framework/src/*/helpers.php"
]
},
"config": {…}
}
示例 3:排除所有文件
{
"require": {…},
"extra": {
"exclude-from-files": [
"*"
]
},
"config": {…}
}
此插件将遍历每个包,从配置的路径中删除所有文件。这些供应商文件本身不会被删除。根包将被忽略。
结果是,指定的文件永远不会包含在 vendor/composer/autoload_files.php 中。
许可证
此软件受 MIT 许可证许可。