如何在Magento 2中打包模块?composer.json
在实现任何模块的包装之前,将通过创建一个 composer 文件来指导您完成本主题。借助composer文件,可以在应用程序实例中交付,安装和升级组件。
包装模块概述在Magento 2中
- 步骤1:设置Magento Composer文件(
composer.json
) - 步骤2:使用来注册组件
registration.php
- 步骤3:打包并生成组件
- 步骤4:查看示例composer.json
步骤1:设置Magento Composer文件(composer.json
)
该composer.json
文件允许指定名称,要求,版本以及有关您所关注的组件的其他一些基本信息。但是,您需要将此文件保存在模块的根目录中。
在composer.json
使用了作曲家的通用架构,与一些要求:
元件 | 描述 |
---|---|
name | 格式完整的组件名称<vendor-name>/module-<component-name> 。所有字母必须小写。使用中的破折号<component-name> 分隔单词。 |
type | 对于模块,此值必须设置为magento2-module 。其他可能的类型metapackage ,magento2-theme 和magento2-language 。 |
autoload | 指定要加载的必要信息,例如[registration.php](extension-dev-guide / build / component-registration.html)。有关更多信息,请参见从Composer 自动加载。 |
在Magento Marketplace中,有许多可接受的组件类型。type
下表的下一列中,每种组件类型都对应一个作曲家。以及必须为该类型的组件添加到composer.json的type字段的值。
友好名称 | composer.json`type` |
---|---|
元包 | 元包 |
模组 | magento2模块 |
主题 | magento2-主题 |
语言包 | magento2语言 |
让我们以下面的Metapackage示例为例
{
"name": "magento/product-community-edition",
"description": "A sample metapackage",
"version": "2.0.0",
"type": "metapackage",
"require": {
"php": "~5.5.0|~5.6.0|~7.0.0",
"zendframework/zend-stdlib": "~2.4.6",
"zendframework/zend-code": "~2.4.6",
"zendframework/zend-server": "~2.4.6",
"zendframework/zend-soap": "~2.4.6",
"zendframework/zend-uri": "~2.4.6",
"zendframework/zend-validator": "~2.4.6",
"zendframework/zend-crypt": "~2.4.6",
"zendframework/zend-console": "~2.4.6",
"zendframework/zend-modulemanager": "~2.4.6",
"zendframework/zend-mvc": "~2.4.6",
"zendframework/zend-text": "~2.4.6",
"zendframework/zend-i18n": "~2.4.6",
"ext-ctype": "*",
"ext-gd": "*",
"ext-spl": "*",
"ext-dom": "*",
"ext-simplexml": "*",
"ext-mcrypt": "*",
"ext-hash": "*",
"ext-curl": "*",
"ext-iconv": "*",
"ext-intl": "*",
"ext-xsl": "*",
"ext-mbstring": "*",
"ext-openssl": "*"
},
"license": [
"OSL-3.0",
"AFL-3.0"
]
}
以下示例是composer.json
模块的文件:
{
"name": "magento/sample-module-newpage",
"description": "A Magento 2 module that creates a new page",
"type": "magento2-module",
"version": "1.0.0",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"require": {
"php": "~5.5.0|~5.6.0|~7.0.0",
"magento/framework": "~100.0.4"
},
"autoload": {
"files": [ "registration.php" ],
"psr-4": {
"Magento\\SampleNewPage\\": ""
}
}
}
步骤2:使用来注册组件 registration.php
接下来,您必须通过来注册组件registration.php
。
步骤3:打包并生成组件
现在是使用扩展目录的时候了,让我们应用一个zip操作作为以下代码片段来添加一个包:
zip -r vendor-name_package-name-1.0.0.zip package-path/ -x 'package-path/.git/*'
压缩操作中有一些注意事项:
- 单词之间不要留空格
- 插入字母数字字符作为破折号
这样,您的扩展程序包将从任何有效的GitHub URL中获取。
步骤4:查看示例composer.json
{
"name": "mageplaza/magento-2-seo-extension",
"description": "Magento 2 SEO extension",
"require": {
"php": "~5.5.0|~5.6.0|~7.0.0",
"mageplaza/core-m2": "dev-master"
},
"type": "magento2-module",
"version": "1.1.1",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"authors": [
{
"name": "Mageplaza",
"email": "hi@mageplaza.com",
"homepage": "https://www.mageplaza.com",
"role": "Leader"
}
],
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Mageplaza\\Seo\\": ""
}
}
}
{
"name": "mageplaza/magento-2-social-login",
"description": "Magento 2 Social Login Extension",
"require": {
"php": "~5.5.0|~5.6.0|~7.0.0"
},
"type": "magento2-module",
"version": "1.0.0",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"authors": [
{
"name": "Mageplaza",
"email": "hi@mageplaza.com",
"homepage": "https://www.mageplaza.com",
"role": "Leader"
}
],
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Mageplaza\\SocialLogin\\": ""
}
}
}