【问题标题】:Use composer ton install depedencies while creating custom WP plugin在创建自定义 WP 插件时使用 composer 安装依赖项
【发布时间】:2015-03-26 06:29:47
【问题描述】:

我对作曲家真的很陌生,而且还不太了解它。

事情是这样的:

我正在构建一个需要外部库的 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 中安装这些依赖项

谁能解释我如何做到这一点?

谢谢!

【问题讨论】:

  • 您可能应该阅读这篇文章 roots.io/using-composer-with-wordpress - 并且根据我根本不遵循的 Wordpress 的状态,类似 Composer 的解决方案是您的插件在Composer-way 并将在使用 Wordpress 和您的插件的应用程序中用作依赖项本身。
  • 我读过它,但还不能理解它......:/我希望阅读一个例子。我不需要使用 composer 安装 Wordpress。我只是想使用 composer(在我的插件目录中?)来安装我的插件需要的库。

标签: wordpress composer-php


【解决方案1】:

好吧,我想说的是,除非 Wordpress 开始支持 Composer(他们目前还没有正式支持,尽管如果你知道自己在做什么,Wordpress 可以与 Composer 一起安装,首先要知道它的包名) , 你不应该过多考虑使用它来交付你的插件,意思是:如果你在你的插件中使用其他软件,我认为你必须将它捆绑在你的插件中,否则它不会'没用。

它仍然会产生诸如“您使用的库版本是否与其他插件使用的同一库兼容?”之类的问题。和“你如何进行自动加载?”正确。

在内部,您可以使用 Composer 来管理这些库,就像您对使用 Composer 的任何其他项目一样,只是您的插件的发布包必须包含您添加的所有这些库和自动加载器 - 使用 Composer 或别的东西。

请注意,我基本上对 Wordpress 人员通常如何组织他们的东西一无所知。阅读我在对您的问题的评论中链接到的讨论,我的印象是他们还有很长的路要走,并且没有人积极支持它并促进使用 Composer 进行依赖管理,因为它也可以正常工作,否则可能会破坏。

【讨论】:

    【解决方案2】:

    在内部,您可以使用 Composer 来管理这些库,就像 你会使用 Composer 的任何其他项目,使用未成年人 插件的发布包必须包含所有的区别 您添加的这些库和自动加载器 - 使用 Composer 或其他工具 否则。

    谢谢斯文,这就是我想知道的。 我终于设法做到了。 这是我使用终端将依赖项(此处为fluentDOM)安装到 /wordpress/wp-content/plugins/my-custom-plugin/_inc/php 的分步指南,并且开始时没有任何 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/ 安装作曲家:

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

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

    3/ 那么,让我们安装包吧:

    composer require fluentdom/fluentdom
    

    如果您需要有关此软件包的更多信息,packagist 网站可能会很有用。它显示了作曲家包的信息(版本,依赖项),...。见fluentdom/fluentdom

    这会将fluentdom安装在默认的composer目录/vendor生成一个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

    【讨论】:

      猜你喜欢
      • 2020-05-20
      • 2015-10-27
      • 2015-01-24
      • 2017-06-28
      • 2015-07-14
      • 1970-01-01
      • 2016-04-19
      • 2017-09-18
      • 2018-09-11
      相关资源
      最近更新 更多