mcaskill/composer-exclude-files

从 autoload_files.php 中排除文件

v4.0.0 2024-05-19 18:19 UTC

This package is auto-updated.

Last update: 2024-09-15 21:22:48 UTC


README

Build Status Latest Release License

这是一个 Composer 插件,用于通过 files 自动加载机制排除包所需的文件。

这对于忽略用于启动包或提供 PHP 函数等的文件很有用。

解决 composer/composer#5029

安装

此插件可以本地或全局安装。

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() 函数 中使用的特殊字符子集,以匹配排除路径的模式

  • * — 匹配零个或多个字符。
  • ? — 匹配恰好一个字符(任何字符)。

此插件在自动加载器被导出之前被调用,例如使用 installupdatedump-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 许可证许可。