使用Composer来打包模块. * 使用composer打包Magento的2模块 * 使用我们的验证工具在分发之前检查你的包。 * 分布在仅Magento的市场。上传包到Magento的卖场 **包装概述** Magento的应用程序使用composer包在一个应用程序实例分发,安装和升级组件。 打包组件,您必须: 创建一个Magento的composer文件(composer.json)。 使用registration.php的注册组件包并发布您的组件。 使用我们的验证工具在分发之前检查你的包。 **创建一个Magento的composer文件** Magento的composer.json文件定义的名称,要求,版本,以及有关的部件等基本信息。该文件必须被放置在模块的根目录。 该composer.json使用composer的通用架构,有以下限制: ~~~ name:一个完全合格的组件名称,格式为<vendor-name>/module-<component-name> 。所有英文字母必须小写。使用破折号分隔单词。 type:例如模块,此值必须设置为magento2模块。其他可能的类型还有元数据包,magento2主题和magento2语言。 autoload:指定所需的信息被加载,如[和registration.php](/guides/v2.0/extension-dev-guide/build/component-registration.html)。欲了解更多信息,请参阅[自动载入的](https://getcomposer.org/doc/01-basic-usage.md#autoloading)composer。 ~~~ 下表讨论了Magento的市场支持组件类型。下表中的composer类型列指定类型字段必须添加到composer.json为该类型的组件的值。 |Friendly name |composer.json type |Description | | -- | -- | -- | | Metapackage|metapackage |从技术上讲,composer封装类型,而不是一个Magento的组件类型。一个元数据包仅包含一个指定的组件和它们的依赖列表的composer.json的。例如,无论是Magento的CE和Magento的EE是元数据包。 | | Module|magento2-module |该修改的Magento应用程序行为守则。您可以上传单个模块的Magento的市场或模块可以依赖于某些父包。 | | Theme|magento2-theme |它修改店面或Magento管理的外观和感觉的代码。 | | Language package|magento2-language |翻译店面或管理 | **使用元数据包** 综合包让你组由多个包成一个团结的整体的扩展。作为标准composer.json文档中描述的这种工作的。如果您有使用多个包的扩展,你必须使用一个元数据包作为根包。否则,你不应该使用元数据包。您提交给Magento的市场上的元数据包应该只包含元数据包 我们建议的元数据包是指特定的组件版本。不要使用通配符来表示版本范围。 **元数据包的例子** 下面的例子是一个综合包一个composer.json: ~~~ { "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文件 下面的例子是一个模块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\\": "" } } } ~~~ **包并发布你的扩展** 通过对目录中的压缩操作与扩展名(排除不必要的目录)创建一个包,扩展的。例如: ~~~ zip -r vendor-name_package-name-1.0.0.zip package-path/ -x 'package-path/.git/*' ~~~ 使用字母数字字符用破折号分隔单词包文件名。不要使用空格。 Magento的可检索任何有效的URL GitHub的您的扩展包。 **托管在GitHub和Packagist** 先决条件:必须的git你的机器上进行设置。 1.导航到你的组件目录,并在根composer.json文件,并使其成为一个新的git仓库。详情请参阅GitHub的文档。 2.当你犯并推组件到你的GitHub存储库中,您可以: * 使用Composer来直接引用它,或者 * 使用以下步骤通过Packagist提及的包。 * 注册在packagist.org一个帐户。 * 单击提交包按钮并粘贴您的GitHub库的链接。 Packagist自动收集从组件composer.json文件中的信息并将其链接到GitHub的资源库,让您引用包作为卖方/模块没有任何额外的存储库的信息,因为这完全是使用GitHub的需要。 **主机上的私人资料库** 如果使用安装向导,您必须使用Magento的市场信息库。私人信息库,可用于开发或私有代码,但安装必须使用命令行界面来完成(你可以安装一个指定只能用命令行安装私人存储库)。 1.使用系统,如赛帝或Toran建立自己作曲的包装库。 2.创建以类似于上述的方式包装。 3.提交/注册您自己的仓库包。例如,它可以作为托管到一个代码库的引用或提交作为一个zip压缩文件。 4.要在项目中使用专用包装库,以下内容添加到您的composer.json文件: ~~~ { "repositories": [ { "type": "composer", "url": [repository url here] } ] } ~~~ 在私人库中的所有包现在可以在需要现场中被引用。