在 Magento2 中打包模块

在打包任何模块之前,应该创建一个 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

文件: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\\": ""
    }
  }
}

文件:composer.json

{
  "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\\": ""
    }
  }
}

本教程翻译自Mageplaza模块开发系列,其他内容请点击下面链接: