在打包任何模块之前,应该创建一个 composer 文件,即 composer.json
。在 composer 文件的帮助下,可以对应用实例进行发表,安装和升级。
第一步:设置一个 Magento Composer 文件(composer.json)
这个 composer.json
文件允许指定名字,必须项,版本和关于组件的一些基本信息。但是,需要把文件保存在模块的根目录下。
composer.json 使用了 Composer 的格式,以下是必须有的:
name | 符合规定的组件名,格式为 <提供者的名>/module-<组件名>。所有的必须为小写。用破折号来分割单词 <组件-名字> |
type | 对于模块来说,这个值必须是 magento2-module 。其他的可能的值为 metapackage,吗gento2-theme 和 magento2-language |
autoload | 指定必须加载的信息,比如 registration.php (extension-dev-guide/build/component-registration.html) 。 |
在 Magento 市场中,有一些可接受的组件类型。每一个组件类型对应一个下面这个表格里的 composer type ,type
字段的值必须添加到 composer.json
中。
名称 | composer.json 中的 type |
---|---|
Metapackage | metapackage |
模块 | magento2-module |
主题 | magento2-theme |
语言包 | magento2-language |
下面是一个 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\\": ""
}
}
}
第二步:注册组件
通过 registration.php
来注册组件
第三步:打包并生成组件
在你的扩展的目录下,按照以下代码使用 zip 来添加一个包:
zip -r vendor-name_package-name-1.0.0.zip package-path/ -x 'package-path/.git/*'
关于 zip 的使用要注意:
-
在单词之间不要留空格
-
在字母和数字字符串间插入破折号
这样你的扩展才能通过合法的 GitHub URL 被获取。
第四步:查看示例 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\\": ""
}
}
}