创建Composer.json

通过在 Magento 2中创建 composer.json 来管理在项目中使用的组件会带来极大的便利。这篇教程用来帮助商店所有者去熟悉 composer.json 文件。

Magento 2 Composer 概览

Composer 是 PHP 和 Magento 2 的依赖关系管理工具,它扮演收集各种组件和产品版本的角色,

当你在 Magento 2 中使用 composer 时,没有必存储所有组件的代码,你只需要创建 composer.json 文件,并且将你需要的组件名称添加到文件中,接下来,composer 将会自动定义并获取所需组件的相关数据,以便运行你的项目。

以下是一些 Magento 2 中组件包含 composer.json 文件的情况:

  • 当一个组件包含 composer.json 文件,并且需要通过 mangento 2 composer 安装(例如:从Packagist, Magento Marketplace 或者其他源)时,通过组件管理器可以更新、卸载、启用或者禁用组件。

  • 当一个组件仍然包含 composer.json 文件,但是不需要通过 Magento 2 composer 安装,如开发人员编写的自定义代码,组件管理器也可以启用或者禁用组件。

所以,对你来说,当你组件的根目录下添加了 composer.json 文件时,平稳的运行项目是相对比较容易的。

Composer.json 文件的说明

Magento 2 的组件和产品版本都可以使用 composer.json文件,具体如下:

ROOT

位置: composer.json

名称: magento/magento2ce

类型: project

这个是 composer.json 主文件,可以被用来当做每个组件根目录下 composer.json 文件的模板,用来调用第三方组件的依赖关系。

CE project (CE 项目)

位置: composer.json

名字: magento/project-community-edition

类型: project

此文件用于 Magento Community Edition 产品,它允许调用 Magento 组件(modules, themes, and 等等)和第三方组件的依赖关系,另外,你可以使用它通过 Magento 系统集成商使用 composer 部署 Magento。

Magento Framework (框架)

位置: lib/internal/Magento/Framework/composer.json

名称: magento/framework

类型: magento2-library

你只能通过 Magento Framework 使用此文件。

Module (模块)

位置:app/code/<vendor-name>/<module-name>/composer.json										vendor/<vendor-name>/<module-name>/composer.json
名称: <vendor-name>/<package-name>
类型: magento2-module

当模块需要运行时,composer.json 文件将会帮助模块扩展外部的依赖关系。

Theme(主题)

 位置:app/design/frontend/<vendor-name>/<theme-name>/composer.json

app/design/adminhtml/<vendor-name>/<theme-name>/composer.json

名称: <vendor-name>/<package-name>
  • 类型: magento2-theme
    对于主题组件,此文件包含用于继承扩展的父主题的依赖关系。

Language Package (语言包)

位置: app/i18n/<vendor-name>/<language-code>/composer.json

名称: <vendor-name>/<package-name>

类型: magento2-language

语言包的 composer.json文件必须包含适合语言代码的正确 ISO代码。

Magento 2 Composer 中组件的种类

Magento 2组件很多,例如模块,主题或语言包。但是,如果没有分配一个确切的类别,将会有一个通用的名称 "magento-2-component "。

为了确定Magento 2组件的类型,系统可能会基于 Magento 2 目录结构将目录和文件组合到正确的位置。

Magento 2 Composer组件的命名规定

创建 Magento 2 的 composer 时,必须强制使用命名空间的格式:/。因为,在这部分,我们要学习 vendor-name 和 package-name 的规定。

vendor-name

Magento 2 扩展的 vendor-name,必须为以下格式的小写字母:magento2/*

如果你想要将扩展提交到 Magento Marketplace,则必须使用已经注册帐户的名称。该名称将会被插入到 composer.json 文件中作为 vendor-name 扩展名的一部分。我为你提供了一个具体的 illustrator以供使用:

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

package-name

package-name 包含多个单词的小写,所以 Magento 2 Composer 规定要用中线(-)将单词分隔,例如:

magento2/<type-prefix>-<suffix>[-<suffix>]...

尤其是,type-prefix 是 Magento 2 组件的一种类型,suffix 用来识别这个类型属于哪个的组件。

这就是在 Magento 2 中创建 composer.json 文件时您需要注意的所有事情,请小心操作。

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