xwp / composer-isolator
Composer 插件,通过命名空间前缀来隔离项目依赖
Requires
- php: ^5.6|^7.0
- composer-plugin-api: ^1.1
- nikic/php-parser: ^3.1
Requires (Dev)
- composer/composer: ^1.0
- friendsofphp/php-cs-fixer: ^2.19
- phpunit/phpunit: ^5.7|^7.5
This package is auto-updated.
Last update: 2024-08-27 00:22:48 UTC
README
Composer 插件,通过命名空间前缀来隔离项目依赖。
工作原理
此插件将所有供应商命名空间前缀为一个选定的值。这包括所有声明的命名空间、use 语句、完全限定的引用以及大多数引用命名空间的字符串值。
所有供应商代码和 composer 自动加载映射都更新为引用前缀命名空间。
它不做什么 不
它不会触及您项目中的任何代码。它只影响供应商目录中的代码,并且只影响引用受影响命名空间的代码。如果您将此应用于现有项目,则必须自己更新代码中的所有引用。
为什么使用它
此插件允许您在同一运行时运行两个利用 composer 依赖的项目,而无需担心冲突的依赖。最常见的例子是在 WordPress 环境中,所有插件都在同一运行时执行,并且可能依赖于相同的 composer 依赖。每个使用此插件的项目的插件都无法与其他项目冲突,除非供应商代码未命名空间(在这种情况下,选择不多...)。
已知限制
- 它不会替换全局命名空间中的函数定义和调用。任何定义和调用全局函数的调用将在转换后保留在全局命名空间中。
使用方法
使用此插件很简单。通过在项目中要求它来安装插件: composer require and/isolate-composer
。
通过添加以下内容到您的 composer.json
来配置插件
"config" : {
"isolate": {
"prefix": "Your\\Prefix\\Here\\",
"excludelist": [],
"autorun": false,
"require-dev": false,
"replacements" : {}
}
}
唯一的必需值是 prefix
。
配置插件后,运行隔离
composer isolate
composer dump
您的供应商代码现在已前缀!
在 isolate
后一定要执行 dump
,否则您的自动加载映射将不正确!
配置
prefix
这是将被添加到所有供应商命名空间的前缀值。它应该是一个有效的命名空间,并且应该对您的项目是唯一的。我建议您不要使用主项目命名空间,或者至少在末尾添加 \\Vendor
。
exludelist
这是一个您不希望前缀的包列表。匹配的包将不会扫描命名空间,但如果有来自其他非排除包的命名空间,则仍然会重写代码。
autorun
将此值设置为 true 将在每次 dump
之前自动运行隔离过程。
require-dev
默认情况下,仅扫描 require
包的命名空间,并忽略 require-dev
包(如上所述,如果它们包含来自其他包的命名空间,则仍然会重写代码)。
将此值设置为 true
将包括 require-dev
包的扫描,并且任何找到的命名空间都将被前缀。
replacements
这是一个手动修复供应商代码中未检测到或不应替换的内容的地方。
在解析和重写每个文件后,如果替换列表中有条目,则将在文件上执行字符串替换。
字符串替换应该是幂等的,否则在多次执行时内容会损坏。
语法是
"replacements" : {
"path/relative/to/vendor/root/file.php" : {
"search" : "replace",
"search" : "replace",
},
"path/relative/to/vendor/root/file.php" : {
"search" : "replace",
"search" : "replace",
}
}
鸣谢
由XWP创建和维护,作为and/composer-isolation的分支。