yireo/magento2-replace-tools

用于维护 yireo/magento2-replace 包的工具

安装次数: 11,551

依赖关系: 0

建议者: 0

安全: 0

星星: 110

关注者: 9

分支: 16

开放问题: 1

类型:composer-plugin

1.0.7 2024-09-17 15:55 UTC

This package is auto-updated.

Last update: 2024-09-17 15:56:18 UTC


README

此仓库提供了一个 composer 插件,帮助您管理根 composer.json 中的 composer 替换。一旦安装此包,composer 插件也将安装,允许您通过特定的命令(composer replace:?)来管理替换。为了确保替换不会冲突,此插件还会将自身的 extra.replace 部分添加到您的 composer.json 中。

快速入门

composer require yireo/magento2-replace-tools --dev # Require this plugin
composer replace:bulk:add yireo/magento2-replace-bundled # Add a replacement bulk package
composer replace:build # Rebuild your composer.json based upon this
composer update --lock # Actually update all your dependencies

此插件的安装

composer require yireo/magento2-replace-tools --dev

通用用法

通过一系列命令,此 composer 插件旨在帮助您更有效地管理您的 replace 部分。而不是单独添加包,包通过额外的 composer 部分 extra.replace 批量添加。

{
    "replace": {
        "klarna/module-kp-graph-ql": "*",
        "magento/module-async-order-graph-ql": "*",
        "magento/module-authorizenet-graph-ql": "*",
        "magento/module-braintree-graph-ql": "*",
        "magento/module-bundle-graph-ql": "*",
        "magento/module-catalog-graph-ql": "*",
        ...
        "yireo/example-graph-ql"
    },
    "extra": {
        "replace": {
            "bulk": {
                "yireo/magento2-replace-graph-ql"
            },
            "exclude": {
                "magento/module-graph-ql": true
            },
            "include": {
                "yireo/example-graph-ql": true
            }
        }
    }
}

替换包(任何 composer 项目)

列出所有当前的 composer 替换

composer replace:list

替换特定的包

composer replace:add foo/bar '2.0'

删除特定的替换

composer replace:remove foo/bar

通过设置版本为 * 删除特定的包

composer replace:add foo/bar

批量替换包(特定于 Magento)

替换所有 Magento 多源库存包

composer replace:bulk:add yireo/magento2-replace-inventory

这会将此元包 yireo/magento2-replace-inventory 中的所有替换添加到您的 replace 部分。同时,它还会添加一个额外的部分,如下所示

    "extra": {
        "replace": {
            "bulk": {
                "yireo/magento2-replace-inventory"
            }
        }
    },

替换所有 Magento GraphQL 包,但不包括 magento/module-graph-ql 包本身,但再次替换包 yireo/example-graph-ql

composer replace:bulk:add yireo/magento2-replace-graphql
composer replace:exclude magento/module-graph-ql
composer replace:include yireo/example-graph-ql
composer replace:validate
composer replace:build

这会将此元包 yireo/magento2-replace-graphql 中的所有替换添加到您的 replace 部分(不包括 magento/module-graph-ql 包,但包括 yireo/example-graph-ql 包)。同时,它还会添加一个额外的部分,如下所示

{
  "replace": {
      "klarna/module-kp-graph-ql": "*",
      "magento/module-async-order-graph-ql": "*",
      "magento/module-authorizenet-graph-ql": "*",
      "magento/module-braintree-graph-ql": "*",
      "magento/module-bundle-graph-ql": "*",
      "magento/module-catalog-graph-ql": "*",
      ...
      "yireo/example-graph-ql"
  },  
  "extra": {
    "replace": {
      "bulk": {
        "yireo/magento2-replace-graph-ql"
      },
      "exclude": {
        "magento/module-graph-ql": "*"
      },
      "include": {
        "yireo/example-graph-ql": "*"
      }
    }
  }
}

关于 replace:build 的说明

⚠️ 警告:由于其实施的性质,replace:build 将替换您的 composer.json 中的现有 replace 部分。如果您在此处替换了任何单个依赖项,请确保在 replace:build 后重新添加它们。目前此 composer 扩展不维护您的 composer.json 中的现有 replace 部分。如果您希望此工具帮助您管理此单个依赖项,请使用 extra.replace.include 部分(见上文)。

可用的批量包

请注意,这些仓库中使用的 composer 的 replace 功能并未很好地记录,可能存在滥用。如果您不愿意花时间自行排查,请完全忘记这种方法,以免浪费时间。

构建 composer 替换

使用以下命令配置您的 composer.json 以使用批量替换

composer replace:bulk:add yireo/magento2-replace-bundled
composer replace:bulk:add yireo/magento2-replace-inventory
composer replace:bulk:add yireo/magento2-replace-graphql
composer replace:bulk:add yireo/magento2-replace-sample-data
composer replace:validate
composer replace:build

使用 composer 替换

一旦您的 composer.json 文件中有了 replace 部分

rm -r vendor/
composer update --lock

不要只是使用 composer install。不要使用常规的 composer 命令,请严格遵循以下步骤。

在替换了 Magento 的 composer 包之后

安装了 composer 替换后,请首先清除 generated/ 文件夹,然后运行 bin/magento setup:di:compilebin/magento setup:upgrade 来检查 Magento 是否仍然工作。请注意,这些步骤是通用的开发步骤,与该存储库无关。

rm -r generated/
bin/magento setup:di:compile
bin/magento setup:upgrade

常见问题解答 (FAQ)

我尝试使用 composer require a/b 安装,但遇到了错误

请注意,此类问题将不再回答,除非在这里:请不要使用简单的 composer require a/b 命令。它上面没有文档说明,它不是流程的一部分,并且不起作用。不要认为如果你了解 composer,你就知道简单的 composer require a/b 必须起作用。如果你认为 composer 替换是按照 composer 包的方式安装的,那么你就不知道 composer 替换了。

如果您想获得支持,请遵循上面概述的所有命令。坚持下去。不要争论,不要推理,但坚持下去。接下来,如果所有使用 composer 命令的解决方案都失败了,请仅在 GitHub 上报告问题。

您的扩展不起作用

您说得对,它不起作用!原因是它不是一个扩展。这不是关于安装 Magento 模块的问题。这是关于用空值替换 composer 包。这个扩展不存在,它不是 Magento 模块。它更像是一个精心制作的 composer 配置,可以手动复制或使用正确的流程安装。它是一个 composer 元包,有一个未记录的技巧。如果您不喜欢它,请勿使用它。

安装包导致许多错误

有趣,不是吗?是的,这可能会发生。也许您正在替换的某些模块正在与您自己的自定义代码一起使用。或者,也许您依赖于其他第三方扩展,这些扩展还有未记录的依赖项,与这个 replace 技巧冲突。如果您不打算调试这个问题,只需跳过这个技巧并继续前进。如果您愿意调试这个问题,请将 replace 行复制到您自己的 composer.json 中,并逐行删除,直到找到问题所在。

某个包是否与 Magento 2.x.y 兼容?

从理论上讲,是的。请确保理解这些包不是模块,不是库,也不是 Magento 扩展。它是一组破解。因此,如果您理解 composer 中 replace 技巧的好处,您可以使用这些存储库来减轻升级的痛苦。

这些存储库中的一个概念是尝试通过创建一个相应的发布 x.y.z 的分支 2.x.y 来跟踪主要 Magento 版本。因此,Magento 2.3.5 与替换分支 3.5.* 匹配。Magento 2.4.1 与替换分支 4.1 匹配。在您的 composer.json 中添加一个依赖项 ^4.0,这将自动升级到任何 4.X 版本,但排除对 5.X 的主要升级。

有时实际工作落后,这绝不意味着当前捆绑的技巧不再起作用。只需使用 composer 安装此包,看看它是否适用于您(见下文)。

如何将替换升级到 Magento 2.4.X?

请注意上述版本策略。一旦理解了这一点,实际实现就很简单:composer require yireo/magento2-replace-core:^4.0 --no-update

如何测试它是否正常工作?

使用您的测试环境。安装相关包。如果这起作用,运行 bin/magento setup:di:compile(在开发模式和产品模式下)以查看是否有任何错误。如果失败,请在此处自由报告问题。如果这起作用,您就可以假设它正常工作了。

请记住,这个存储库提供的是一个智能的技巧,而不是一个受支持的解决方案。你也可以忍受一个速度较慢的符合Magento标准的安装(可能包含你不需要或不喜欢的模块)。

我如何知道某个东西被替换了?

不幸的是,Composer没有提供相应的命令行工具来处理这个功能,因为替换被存储在这些包中,所以它们不会出现在你的项目自己的composer.json文件中(除非你自己添加了它们)。然而,通过打开composer.lock文件并搜索关键词replace,你可以看到所有安装的包中哪些被替换了。一个简单的composer show yireo/magento2-replace-bundled命令可以显示特定包中包含哪些替换。