yireo / magento2-replace-tools
用于维护 yireo/magento2-replace 包的工具
Requires
- composer-plugin-api: ^2.0
- ext-json: *
- guzzlehttp/guzzle: ^6.0 || ^7.0
- league/flysystem: ^2.0 || ^3.0
- league/flysystem-memory: ^2.0 || ^3.0
- symfony/console: ^5.1.0 || ^6.0 || ^7.0
Requires (Dev)
- composer/composer: ^2.0
- phpunit/phpunit: ^9.2 || ^10.0
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
部分(见上文)。
可用的批量包
- yireo/magento2-replace-bundled 删除第三方捆绑扩展
- yireo/magento2-replace-content-staging 删除可选的内容暂存模块
- yireo/magento2-replace-core 删除可选的核心模块
- yireo/magento2-replace-graphql 删除可选的 GraphQL 模块
- yireo/magento2-replace-inventory 删除可选的 MSI 模块
- yireo/magento2-replace-sample-data 删除示例数据模块
- yireo/magento2-replace-all 删除其他目录中列出的所有包
请注意,这些仓库中使用的 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:compile
和 bin/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
命令可以显示特定包中包含哪些替换。