cangokdayi / ilab-namespacer
用于重新命名空间 composer 包以便在 WordPress 插件中使用。 (从 ilab/namespacer 分支而来)
Requires
- ext-json: *
- symfony/console: ^5.1
- symfony/finder: ^5.1
This package is auto-updated.
Last update: 2024-09-30 01:49:07 UTC
README
使用 composer 构建 WordPress 插件听起来是个好主意,但很快你就会遇到麻烦,因为其他插件正在加载与您使用的库不兼容的版本。我们的插件 MediaCloud 广泛使用包 - 超过 65 个不同的库 - 其中许多相当常见。我可以说,我们超过一半的支持请求是由于与其他插件冲突导致的,这些插件使用了过时或更新的同一库版本。真正解决这个问题的唯一方法是重新命名空间我们使用的包,并且能够轻松、安全地做到这一点。
Namespacer 允许您通过给所有命名空间添加命名空间前缀以及给包名称添加前缀来重新命名任何您正在使用的 composer 包。然后它将生成一个名为 "lib" 的文件夹,您可以将它安全地包含在您的插件中。
是的,我知道有像 PHP-Scoper 和 Imposter 这样的项目。我遇到了所有这些问题,这就是我为什么要构建这个。Yoast 和其他插件愉快地使用了 PHP-Scoper,但他们的插件,信不信由你,比 MediaCloud 小得多。例如,Yoast 使用了 4 个 composer 包。
安装
您可以将它全局安装,但我认为您最好通过 composer 将其用作项目的基础。
composer require ilab/namespacer
用法
安装后
./vendor/bin/renamespace [--composer COMPOSER] [--source SOURCE] [--package PACKAGE] [--namespace NAMESPACE] [--config CONFIG] <dest>
参数
例如,您可能运行它
./vendor/bin/namespacer --composer sample.composer.json --config patches.config.php --package mypackage --namespace MyNamespace\Vendor build/
在这个例子中,我们指向一个包含我们想要重新命名空间的包的 composer.json 文件和一个包含在重新命名空间过程中将应用更多手动补丁的过滤器的配置文件。处理输出的结果将放入 build/ 文件夹中。
过滤(在 PHP-Scoper 术语中为修补)
您可以在 vendor/ilab/namespacer/sample.config.php 和 vendor/ilab/namespacer/patches.config.php 中看到一些示例配置,这些配置将演示如何将您自己的代码插入到命名空间过程中以捕获特殊案例。
报告错误
如果您遇到问题,请打开一个工单,并附上您试图处理的 composer.json,并附上对问题的清晰描述。