使用composer在创建自定义WP插件时安装依赖项

时间:2015-03-26 06:29:48

标签: wordpress composer-php

我对作曲家来说真的很陌生,而且还不太了解(还)。

这就是事情:

我正在构建一个需要外部库的Wordpress插件。 图书馆是FluentDOMSelectors-Symfony for FluentDOM

两者都有仅适用于Composer的安装说明:

FluentDOM:

FluentDOM is available on Packagist.org, just add the dependency to your composer.json.

{
  "require" : {
    "fluentdom/fluentdom": "5.x"
  }
}

选择者-Symfony:

composer require symfony/css-selector

我的插件路径是 / wordpress / wp-content / my-custom-plugin

  • 我应该在这个目录的根目录下写一个composer.json文件,它的内容应该是什么?
  • 最后,我想在 / wordpress / wp-content / my-custom-plugin / _inc / lib
  • 中安装这些依赖项。

有人能解释我怎么做吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

好吧,我会说,除非Wordpress开始支持Composer(虽然Wordpress可以与Composer一起安装,但如果你知道你在做什么,首先要知道它的包名) ,你不应该过多考虑将它用于你的插件的交付,这意味着:如果你在你的插件中使用其他软件,我认为你必须将它捆绑在你的插件中,否则它会赢得'工作。

它仍然会产生诸如“您使用的库的版本与其他插件使用的相同库兼容吗?”之类的问题。和“你怎么做自动加载?”正确。

在内部,您可以使用Composer来管理这些库,就像使用使用Composer的任何其他项目一样,不同之处在于插件的已发布包必须包含您添加的所有库和自动加载器 - 使用Composer或别的什么。

请注意,我基本上不知道Wordpress人员通常如何组织他们的东西。阅读我在评论中与您的问题相关联的讨论,我得到的印象是他们还有很长的路要走,并且没有人积极支持它并促进使用Composer进行依赖管理,因为它也以通常的方式工作,或者它可能会破坏事物。

答案 1 :(得分:0)

  

在内部,您可以使用Composer来管理这些库   你会使用其他任何使用Composer的项目   您插件的已发布包必须包含所有内容的区别   您添加的这些库和自动加载器 - 使用Composer或其他东西   其他

谢谢Sven,这就是我想知道的。 我终于设法做到了。 以下是我在 / wordpress / wp-content / plugins / my-custom-plugin / _inc / php 中安装依赖项(此处为fluentDOM)的分步指南终端,一开始没有任何composer.json。

首先,当然,您需要安装Composer。因为我将它用于我的插件的php依赖项,我将在 my-custom-plugin / _inc / php 中安装它。 (您也可以在插件的根目录下安装它并调整以下命令)

1 /打开终端并转到该目录:

cd /Applications/MAMP/htdocs/my-project/wordpress/wp-content/plugins/my-custom-plugin/_inc/php

2 /安装Composer:

curl -sS https://getcomposer.org/installer | php

现在我已准备好在 my-custom-plugin / _inc / php 中使用Composer。 在fluentDOM网站上,我看到我需要安装的软件包名为 fluentdom / fluentdom

3 /所以,让我们安装包:

composer require fluentdom/fluentdom

如果您需要有关此套餐的更多信息,网站 packagist 可能会有用。它显示了作曲家包的信息(版本,依赖关系),....请参阅fluentdom/fluentdom

这将在默认的编辑器目录 / vendor 中安装fluentdom,并且生成composer.json文件;以后更新依赖项很好。

以下是生成的内容:

{
    "require": {
        "fluentdom/fluentdom": "~5.2"
    }
}

但我们希望将依赖项安装到 my-custom-plugin / _inc / php 中,而不是安装到 my-custom-plugin / _inc / php / vendor 中!

4 /让我们编辑composer.json,并将默认目录参数 vendor-dir 设置为空。

{
    "require": {
        "fluentdom/fluentdom": "~5.2"
    },
    "config": {
        "vendor-dir": ""
    }
}

5 /删除 my-custom-plugin / _inc / php / vendor 目录,因为我们不再需要它了。

6 /现在我们有了一个composer.json文件,我们只需要运行

composer.phar install

composer.phar update

......魔法发生了! 完成 !!!我们安装了依赖项,并生成了autoload.php文件。

7 /最后要做的是在你的插件中包含autoload.php:

require_once( plugin_dir_path( __FILE__ ) . '_inc/php/autoload.php' );

这是在没有composer.json文件的情况下实现它的方法。

如果您准备好了composer.json文件,请跳过步骤3到5。

我还建议您阅读此博文:5 features to know about Composer PHP