【问题标题】:Integrating composer with legacy plugin system将作曲家与遗留插件系统集成
【发布时间】:2013-12-02 14:29:47
【问题描述】:

我最近一直在思考如何将 Composer 与 Wordpress 插件集成。是的,在任何人建议之前,Wordpress 是一项要求。我提出了一些想法,但它们都有相当大的缺点。

第一个系统是只在每个插件中包含作曲家包(也就是在本地运行作曲家安装,然后使用插件压缩供应商文件夹以便于上传)。好处是易于安装和简单。当使用相同的依赖项安装多个插件时会出现问题。它不仅非常臃肿,而且如果插件之间存在依赖版本差异,自动加载器会互相搞砸,只加载一个版本。

另一种选择是继续为每个插件提供作曲家包,但也有另一个插件(我们称之为框架插件),它只包含多个插件将使用的包。这样做的好处是没有重复的包,所有插件都将与框架插件附带的包版本一起工作;但是此时会有很多自动加载器,从来都不是一件好事,而且版本管理变得非常复杂。

如果我可以将我的插件视为作曲家包,并在根目录中有一个供应商文件夹,并通过作曲家命令行安装,这当然会容易得多;但是这个系统的一个要求是插件可以通过 ftp 管理,没有 ssh。

我想得越多,似乎就越不可能,我知道作曲家不是为此而设计的;但是有人对如何实现这一点有任何想法吗?

【问题讨论】:

    标签: php composer-php


    【解决方案1】:

    Wordpress 可以与 composer 完全集成 - 如果您使用 composer/installers library,则可以包含具有自己的 composer.json 文件且类型设置为 wordpress-plugin 或 wordpress-theme 的插件或主题,它会将它们放入在正确的位置(wp-content/themes 而不是供应商/)。

    所有公共的 wordpress 插件和主题都可以通过 Wordpress Packagist - http://wpackagist.org/ 获得,您只需将其包含在整个项目的 composer.json 中,如下所示:

    {
        "name": "acme/brilliant-wordpress-site",
        "description": "My brilliant WordPress site",
        "repositories":[
            {
                "type":"composer",
                "url":"http://wpackagist.org"
            }
        ],
        "require": {
            "aws/aws-sdk-php":"*",
            "wpackagist/advanced-custom-fields":"*",
            "wpackagist/posts-to-posts":"1.4.x"
        },
        "autoload": {
            "psr-0": {
                "Acme": "src/"
            }
        }
    }
    

    如果它们位于 github(或类似)中,您可以安装自己的 composer'd 插件/主题,方法是为它们添加 repo,如下所示:

    {
        "type": "vcs",
        "url": "https://github.com/YourUserName/MyWordPressPlugin.git"
    },
    

    确保您在自己插件的 git 存储库中有一个 composer.json,类型设置为 wordpress-plugin 或 wordpress-theme。只需将他们的名字添加到项目的 composer.json 的需要部分。我经常为购买的插件这样做——我为它们创建一个新的私有仓库并添加一个 composer.json。

    在部署方面 - 您将无法在远程服务器上运行 composer install,但您可以从运行 install 命令的工作副本中进行 FTP。或者,如果您使用的是 Git,您可以设置一个 post receive hook setup 来导出项目,运行 composer install 然后 FTPs。

    【讨论】:

    • 感谢您抽出宝贵的时间来写这篇文章。实际上,我也在这个方向上做了很多研究;看起来这就是我要走的路。研究修改 wpackagist 以支持主题,并为私有插件设置 Satis;这些一起应该创造奇迹。它还将解决我们在使用 git 和 WordPress 时遇到的一些问题。谢谢!
    猜你喜欢
    • 2014-03-16
    • 1970-01-01
    • 2016-11-21
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    相关资源
    最近更新 更多