【问题标题】:Submit a plugin to Octobercms Market with composer requirements; must the vendor map be included?向Octobercms Market 提交具有作曲家要求的插件;必须包括供应商地图吗?
【发布时间】:2017-08-10 20:10:57
【问题描述】:

作为开发人员,我想向 OC Market 提交插件。我的插件在 composer.json 中定义了作曲家要求。

在开发机器上一切正常,依赖项包含在项目根目录中执行的 composer update 中。所以所有依赖项都在主根供应商映射中。

我已经在帐户/插件/创建页面中向 OC Market 提交了我的插件。该插件作为 ZIP 文件上传,没有(!)供应商地图。依赖项仅在 composer.json 文件中定义,但实际上并未包含在 ZIP 文件中。

当我现在在全新的 OC 安装中安装我的插件时,插件文件夹中包含一个“供应商”地图。像这样:'plugins/author/foo/vendor'。该插件是从 CMS 中安装的(网址:backend/system/updates/install),也可以作为$ artisan plugin:install author.foo 对 cli 的第二次测试。两次安装都正确。

  1. 这个供应商地图是如何进入插件所在文件夹的?
  2. 在提交到 OC Market 时在 ZIP 文件中添加或不添加供应商地图是一种好的做法吗?

【问题讨论】:

  • 请任何人。如果我的问题不清楚,我非常愿意尝试更清楚。

标签: composer-php octobercms


【解决方案1】:

octobercms.com 市场构建过程将插件的依赖项拉入插件自己目录下的供应商目录,然后从生成的包中删除 composer.lock 和 composer.json。这是为了支持不使用 composer 的用户,同时也支持同时使用市场插件和基于 composer 的插件的用户。

如果我们在构建过程中将 composer.json 留在插件中,然后用户从该市场插件的项目根目录运行 composer update,突然之间他们会出现重复的依赖项,这会导致很多问题。

所有这一切都是说:在向市场提交插件时不要包含您的供应商目录,市场会处理这个问题。不过,请务必包含您的 composer.json 文件。

关于 RainLab.GoogleAnalytics,市场上的构建似乎已被破坏,这意味着它需要在市场上重建。这可以通过将更新推送到 Github 存储库来触发,不幸的是,由于某种原因,我的 Github 帐户的存储库严重损坏,我什至无法评论问题。因此,我无法触发插件的重建。但是,如果您在 Slack 或 IRC 上提醒我与 @spunky(10 月的创建者)讨论它,那么我可以这样做,也许他可以触发重建。

【讨论】:

  • Luke,关于无法在 GitHub 上发表评论;如果您使用广告拦截器,请尝试禁用它。这对我有用。
【解决方案2】:

October 获取关于插件安装或 php artisan october:up 的作曲家依赖

例如在我的插件中:

{
    "name" : "Tschallacka/dynamic-pages-plugin",
    "type" : "october-plugin",
    "description" : "DynamicPages plugin for October CMS",
    "homepage" : "",
    "keywords" : [
        "october",
        "octobercms",
        "pages",
        "exit"
    ],
    "authors" : [{
            "name" : "Tschallacka",
            "email" : "tsch@",
            "role" : "Developer"
        }
    ],
    "require" : {
        "php" : ">=7.0",
        "composer/installers" : "~1.0",
        "webpatser/laravel-uuid" : "^2.0",
        "paragonie/random_compat" : "^2.0"
    },
    "minimum-stability" : "dev"
}

如果我在没有供应商文件夹的情况下提供它,那么当我执行 october:up 或通过 10 月后端安装它时,供应商文件夹(位于此处 plugins/author/myplugin/vendor)将填充所需的文件,所以我最终得到我的供应商目录中的作曲家、webpatser 和 paragonie 文件夹。

【讨论】:

  • 感谢您的宝贵时间!显示您的依赖项的供应商文件夹的路径是什么?因为当我安装从 OC Marketplace 检索到的插件时,该文件夹会显示在这里 www/plugins/authorname/pluginname/vendor 文件夹。不在这里www/vendor
  • 是的,这就是它应该出现的地方。它是您的 composer.json 维护的插件的供应商文件夹。 october 拥有自己的供应商文件夹,由它自己的 composer.json 维护。这就是它的工作原理:-)。
  • 好的!嗯..我也在用作曲家安装私人插件,例如composer require company/myplugin 在 OC 项目的根目录中,然后所有依赖项都下载到根供应商文件夹中,而不是在插件文件夹中。这就是为什么一开始看起来很奇怪......
  • github.com/rainlab/googleanalytics-plugin/issues/67 是我的问题开始的地方...没有错误,但也没有供应商文件夹...有什么想法吗?
  • 可能有错误。如果手动执行 composer 命令更新依赖会发生什么?
猜你喜欢
  • 2015-10-22
  • 1970-01-01
  • 2021-11-12
  • 2016-08-30
  • 2015-03-26
  • 2021-05-13
  • 2018-09-11
  • 1970-01-01
  • 2014-01-24
相关资源
最近更新 更多