alpipego/gcncns

创建WP插件,无需与其他第三方库产生冲突

安装: 19

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放性问题: 1

语言:JavaScript

类型:项目

0.2.0 2017-10-18 14:23 UTC

This package is auto-updated.

Last update: 2024-09-11 01:16:07 UTC


README

使用composer构建插件并保持第三方依赖在仓库中的WP插件模板

又一个插件模板吗?

是的!这个模板旨在通过重命名命名空间来防止由第三方库引起的冲突。与其他模板相比,这个模板不提供WordPress特定的工具或可重用代码。

GCNCNS??

Grunt Composer No Conflict Namespaces

如何使用

准备事情

  1. 通过运行composer create-project alpipego/gcnsnc ./PLUGIN_NAME创建一个新的插件。

  2. 然后你可以更新composer.json文件以包含你的插件详情(或者完全删除它)。

  3. 通过运行npm install(或yarn或其他你想使用的工具)安装node包。

设置

使用你的插件命名空间更新Gruntfile.js,例如,将MyNamespace\\MySubNamespace替换为你的命名空间(和子命名空间)。默认情况下,所有第三方代码将被复制到src/Common,并且命名空间将使用namespaces对象中的值作为前缀。

namespace GuzzleHttp;

将替换为

namespace MyNamespace\MySubNamespace\Common\GuzzleHttp;

添加包

除了将所需包添加到composer中,你还需要将它们添加到grunt/copy.js中的任务中。(注意namespaces.thirdParty变量的使用)。

最简单的形式是一个具有srcdest属性的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'
}

在这里了解更多关于grunt globbing的信息。

自动加载包

不要包含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