vbuck / magento-module-bundler
模块打包工具。将 Magento 模块从 Composer 供应商空间打包成 ZIP 文件。
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/
如何使用
示例场景
- 我需要将一个模块安装到
app/code
中,但该模块只能通过 Composer 安装。 - 执行此操作,我首先需要使用 Composer 下载包。
- 然后,我必须将其内容复制到
app/code
空间,使用正确的供应商和模块名称作为路径。 - 然后,我必须从供应商空间中删除原始副本,并可选地清理我的 Composer 文件。
- 我可以选择将移动的内容打包成 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" 部署
- 灵活:可以在项目中使用或作为独立工具