Best Improved Navigation Extension

Saturday, February 4, 2017

On 12:44 PM by Trọng Huỳnh Nguyễn   No comments
Creating composer.json in Magento 2 brings you more and more convenience to manage components better that used in your project. This topic is the well-documented instruction to assist the store owners to be familiar with the composer.json file.

Overview of Magento 2 Composer



Composer is a dependency management for PHP and in Magento 2, the composer plays the role in gathering components and product editions. When using the Magento 2 composer, there is no requirement of storing all code of each component, and you only need to create composer.json file and declare the needed components in that file instead that. Immediately, the composer will auto-define and take the corresponding data of those components to run for your project.

Here are some situations of the Magento 2 components including composer.json file:
  • When a component contains composer.json file, and needs to install via magneto 2 composer as well (like from Packagist, the Magento Marketplace, or another source), the Component Manager can update, uninstall, enable, or disable the component.

  • When a component still includes composer.json file but doesn’t need to install via Magento 2 composer such as the customization of written codes by a developer, the Component Manager can still enable or disable the component.


So, it is easier for you to run the project smoothly when your component’s root directory is added the composer.json file.

Explanation of composer.json files


Both Magento 2 components and product editions can work with composer.json files, specifically:

Root


  • Location: composer.json

  • Name: magento/magento2ce

  • Type: project


This is the main composer.json file. It can be used as a template for every root composer.json file to call dependencies on third-party components.

CE project


  • Location: composer.json

  • Name: magento/project-community-edition

  • Type: project


This file is used for the Magento Community Edition project. It allows calling the dependencies on the Magento product and the class autoloader. In addition, you can use it to deploy Magento using Composer via Magento system integrators.

CE product


  • Location: composer.json

  • Name: magento/product-community-edition

  • Type: metapackage


This file is used for the Magento Community Edition product. It allows calling the dependencies on the Magento components (modules, themes, and so on) and third-party components. In addition, you can use it to deploy Magento using Composer via Magento system integrators.

Magento Framework


  • Location: lib/internal/Magento/Framework/composer.json

  • Name: magento/framework

  • Type: magento2-library


You only used this file for Magento framework.

Module


  • Locations:

app/code/<vendor-name>/<module-name>/composer.json

vendor/<vendor-name>/<module-name>/composer.json
  • Name: <vendor-name>/<package-name>

  • Type: magento2-module


The composer.json file will aid a module extension to call external dependencies when it needs to be functioned.

Theme


  • Locations:

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

app/design/adminhtml/<vendor-name>/<theme-name>/composer.json
  • Name: <vendor-name>/<package-name>

  • Type: magento2-theme


For a theme component, this file consists of parent theme dependencies which are used for the inheritance of the extension.

Language Package


  • Location: app/i18n/<vendor-name>/<language-code>/composer.json

  • Name: <vendor-name>/<package-name>

  • Type: magento2-language


The composer.json file for language packages have to include the correct ISO code that is suitable for the language code.

Kinds of the component in Magento 2 Composer


There are many kinds of Magento 2 component like a module, theme, or language package. However in the case of not being assigning to an exact category, that will be called generally as magento-2-component.

To determine the type of Magento 2 component, the system possibly combines the directories and files to the correct locations, that is based on the Magento 2 directory structure.

Naming conventions of the component in Magento 2 Composer


When creating Magneto 2 composer, you are compulsory to use the format of the namespace: <vendor-name>/<package-name>. Thus, in this part, we will learn the conventions of the vendor-name and package-name.

vendor-name


The vendor-name must be lowercase as the following format for Magento 2 extensions: magento2/*

In case that you want to submit the extension to Magento Marketplace, you have to use the name you have registered the account there. That name is injected into the composer.json file as the vendor-name part of the extension name. I have a specific illustrator for your approach:

 
"name": "mageplaza/magento-2-seo-extension",
"description": "Magento 2 SEO extension",
"require": ~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


The package-name also contains the lowercase with multiple words, so Magento 2 Composer asks for separating them by dash as the following convention:

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

In particular, type-prefix is a type of Magento 2 component and suffix is a thing to realize which component it is within that type.

That is all things you need to pay attention when creating a composer.json file in Magento 2. Please follow carefully and make yourself more comfortable with the composer.json file when running your projects.

https://www.mageplaza.com/magento-2-create-composer-json.html

0 comments:

Post a Comment