通过在 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 文件时您需要注意的所有事情,请小心操作。