【问题标题】:composer - how to install/prioritise specific packages first before the other packages?composer - 如何在其他软件包之前先安装/优先安装特定软件包?
【发布时间】:2019-03-19 19:36:07
【问题描述】:

我已经设置WordPress and obtaining its required plugins via composer 好几年了,它工作得很好,但是在安装不知道如何使用WP_SITEURL 和还有不支持非标准 WordPress 文件夹结构的 PaaS。

所以我想知道我是否仍然可以使用 composer 来设置 WordPress-core(或任何其他包),但我希望先安装它。

说在你的composer.json,你有以下包:

{
    "name": "test/composer-install-order",
    "type": "project",
    "repositories": [
    { "type": "composer", "url": "https://wpackagist.org" }
    ],
    "require": {
        "php": ">=7.2",
        "composer/installers": "~1.6.0",
        "johnpbloch/wordpress": "^4.9",
        "wpackagist-plugin/better-search-replace": "*",
        "wpackagist-plugin/bugherd": "*",
        "wpackagist-plugin/disable-emojis": "*"
    },
    "extra": {
    "installer-paths": {
        "public_html/wp-content/plugins/{$name}/": ["type:wordpress-plugin"],
        "public_html/wp-content/themes/{$name}/": ["type:wordpress-theme"]
    },
    "wordpress-install-dir": "public_html"
    },
    "config": {
        "preferred-install": "dist",
        "optimize-autoloader": true,
        "sort-packages": true
    }
}

上面的 composer.json 说您需要 3 个插件: better-search-replace、bugherd 和 disable-emojis

但是当你点击composer install:

➜  temp1 composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 7 installs, 0 updates, 0 removals
- Installing composer/installers (v1.6.0): Loading from cache
- Installing johnpbloch/wordpress-core-installer (1.0.0.2): Loading from cache
- Installing wpackagist-plugin/better-search-replace (1.3.2): Loading from cache
- Installing wpackagist-plugin/bugherd (1.0.0.0): Loading from cache
- Installing johnpbloch/wordpress-core (4.9.8): Loading from cache
- Installing johnpbloch/wordpress (4.9.8): Loading from cache
- Installing wpackagist-plugin/disable-emojis (1.7.2): Loading from cache
Writing lock file
Generating optimized autoload files
➜  temp1

您只会在wp-content/plugins 文件夹中获得1 个插件。原因是当您检查上面的打印时,在 Wordpress 核心文件 johnpbloch/wordpress 之前首先安装了 2 个插件 better-search-replacebugherd。所以即使composer 将这两个插件包提取到正确的文件夹中,johnpbloch/wordpress 也将它们删除,因为它覆盖了wp-content/plugins 文件夹。

唯一可行的方法是,如果我在插件之前先安装johnpbloch/wordpress,但我不知道它是否可能,因为 composer 通过composer.lock 内容安装。

【问题讨论】:

    标签: php wordpress composer-php composer-plugin


    【解决方案1】:

    johnpbloch/wordpress 已删除它们,因为它覆盖了 wp-content/plugins 文件夹

    当包开始出现这样的行为时,我什至不知道人们会期待什么。我建议您提交问题或拉取请求以修改此行为,因为它充其量似乎是有问题的,如果我说实话,它只是纯粹的恶意。

    您确定这不是您的插件路径或 wordpress 安装程序路径的错误配置错误吗?

    【讨论】:

    • 插件本身并不是恶意的——它只是 WordPress 缺乏内置作曲家支持的副产品。
    【解决方案2】:

    这里是维护者。按照建议,OP 在这里打开了一个问题:https://github.com/johnpbloch/wordpress-core/issues/14

    我想在此处链接到它(并将其复制到下面),以便将来如果有人遇到此问题,有一个答案可以阐明正在发生的事情。 :)

    从 github 问题复制的响应:

    你好狼,

    感谢您提出问题。这里的根本问题是冲突 在 Composer 的工作方式和 WordPress 的默认工作方式之间。

    如果您想使用 Composer 将 WordPress 核心作为依赖项进行管理 包,您必须使用特定的非标准安装选项 对于核心安装在子目录中的 WordPress,并且 wp-content 目录设置为核心包之外的位置。 拉斯特has a great microsite detailing the optimal setup。您也可以查看my sample WordPress package starter package 灵感。你可以阅读更多关于installing core in a subdirectorymoving wp-content 在法典上。

    如果您有兴趣阅读更多关于 这个问题,请看this thread in the installer repository 其中主题得到更冗长的处理。

    希望有帮助!

    【讨论】:

    • John P Bloch 本人 ;) 但如果您在报价单上删除我的名字,我将不胜感激
    • 非常抱歉。我从这里更新了它以使用你的名字。 :)
    猜你喜欢
    • 2020-03-22
    • 2020-05-19
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 2015-04-08
    • 2018-10-11
    • 2015-05-23
    相关资源
    最近更新 更多