alpipego / gcncns
创建WP插件,无需与其他第三方库产生冲突
This package is auto-updated.
Last update: 2024-09-11 01:16:07 UTC
README
使用composer构建插件并保持第三方依赖在仓库中的WP插件模板
又一个插件模板吗?
是的!这个模板旨在通过重命名命名空间来防止由第三方库引起的冲突。与其他模板相比,这个模板不提供WordPress特定的工具或可重用代码。
GCNCNS??
Grunt Composer No Conflict Namespaces
如何使用
准备事情
-
通过运行
composer create-project alpipego/gcnsnc ./PLUGIN_NAME
创建一个新的插件。 -
然后你可以更新
composer.json
文件以包含你的插件详情(或者完全删除它)。 -
通过运行
npm install
(或yarn或其他你想使用的工具)安装node包。
设置
使用你的插件命名空间更新Gruntfile.js
,例如,将MyNamespace\\MySubNamespace
替换为你的命名空间(和子命名空间)。默认情况下,所有第三方代码将被复制到src/Common
,并且命名空间将使用namespaces
对象中的值作为前缀。
namespace GuzzleHttp;
将替换为
namespace MyNamespace\MySubNamespace\Common\GuzzleHttp;
添加包
除了将所需包添加到composer中,你还需要将它们添加到grunt/copy.js
中的任务中。(注意namespaces.thirdParty
变量的使用)。
最简单的形式是一个具有src
和dest
属性的JavaScript对象
{
src: 'vendor/composer/ClassLoader.php',
dest: 'src/<% namespaces.thirdParty %>/Composer/Autoload/ClassLoader.php'
}
这会将单个.php
文件复制到src目录。复制目录中的所有内容同样简单
{
expand: true,
cwd: 'vendor/psr/container/src',
src: '**',
dest: 'src/<% namespaces.thirdParty %>/Psr/Container'
}
如果你只想复制某些文件而不复制其他文件,这也可以实现
{
expand: true,
cwd: 'vendor/pimple/pimple/src/Pimple',
src: ['**', '!**/Tests/**'],
dest: 'src/<% namespaces.thirdParty %>/Pimple'
}
自动加载包
不要包含composer的autoload.php
,而是使用它提供的ClassLoader
类。在插件顶部(或在启动文件中)添加以下内容
use MyNamespace\MySubNamespace\Common\Composer\Autoload\ClassLoader;
require_once __DIR__ . '/src/Common/Composer/Autoload/ClassLoader.php';
$loader = new ClassLoader();
$loader->setPsr4('MyNamespace\\MySubNamespace\\', realpath(__DIR__ . '/src/'));
$loader->register();
你必须更改命名空间和目录以符合你的设置,找到有关ClassLoader
的文档。
运行它
运行它就像在包安装后运行grunt thirdParty
一样简单。这也可以放入composer脚本中,例如post-update-cmd
。