vbuck/magento-module-bundler

模块打包工具。将 Magento 模块从 Composer 供应商空间打包成 ZIP 文件。

1.4.0 2022-05-27 15:05 UTC

This package is auto-updated.

Last update: 2024-09-13 20:56:54 UTC


README

将 Magento 模块从 Composer 供应商空间打包成 ZIP 文件。

在某些情况下,即使模块仅配置为基于 Composer 的安装,也必须使用 app/code 空间安装模块。此工具帮助将一个或多个 Composer 包打包成一个单一的 ZIP 归档。

使用场景

  • 提供多种安装选项,无需手动打包。
  • 从一个或多个 Composer 包创建模块组合包以进行分发。

此工具是为了支持从元包自动打包多个 Composer 包而构建的。

安装

作为 Composer 包与项目一起加载

composer config repositories.magento-module-bundler vcs https://github.com/vbuck/magento-module-bundler.git
composer require vbuck/magento-module-bundler:*

或者您可以下载独立的 CLI 工具

wget https://raw.githubusercontent.com/vbuck/magento-module-bundler/main/bin/module-bundler
chmod +x module-bundler
sudo mv module-bundler /usr/local/bin/

如何使用

示例场景

  1. 我需要将一个模块安装到 app/code 中,但该模块只能通过 Composer 安装。
  2. 执行此操作,我首先需要使用 Composer 下载包。
  3. 然后,我必须将其内容复制到 app/code 空间,使用正确的供应商和模块名称作为路径。
  4. 然后,我必须从供应商空间中删除原始副本,并可选地清理我的 Composer 文件。
  5. 我可以选择将移动的内容打包成 ZIP 归档进行分发。

我想使用单个命令自动化此过程。

代码示例

$instance = new \Vbuck\MagentoModuleBundler\Bundler('/path/to/magento/root');
$result = $instance->bundle(
    [
        'vendor/package1',
        'vendor/package2',
        '/path/to/other/package',
        'package-*',
    ],
    '/path/to/output',
    \Vbuck\MagentoModuleBundler\Bundler::BEHAVIOR_INDIVIDUAL_BUNDLES, // or BEHAVIOR_SINGLE_BUNDLE
    \Vbuck\MagentoModuleBundler\Bundler::OUTPUT_TYPE_MAGENTO // or OUTPUT_TYPE_COMPOSER
);

if ($result[0]->state === true) {
 echo "Module {$result[0]->name} has been bundled"; 
}

命令行使用

bin/module-bundler --app-root=/path/to/magento \
    --package=/path/to/magento/root \
    --package=vendor/package1 \
    --package=/path/to/other/package \
    --package=package-*
    --single-bundle
    --output-path=/path/to/bundles

Options:
    --app-root[=PATH]       Optional path to a Magento installation. Defaults to current working directory.
    --output-path[=PATH]    Optional path to write your bundles. Defaults to current working directory.
    --package[=SEARCH]      A search string for a package. Can be absolute, relative, package name, wildcard.
    --single-bundle         Optional flag to bundle all matching packages into a single artifact.
    --composer-artifact     Optional flag to output the bundle as a Composer artifact instead of a Magento bundle.

架构原则

  • 简单:低复杂性,依赖少,"gistable" 部署
  • 灵活:可以在项目中使用或作为独立工具