How to Package Module in Magento 2?

How to Package Module in Magento 2? You will be guided in this topic by creating a composer file composer.json before you implement the packaging of any module. With the assistance of the composer file, it is allowed to deliver, install, and upgrade components in an application instance.

Overview of packaging module in Magento 2

  • Step 1: Setup a Magento Composer file (composer.json)
  • Step 2: Register the component using registration.php
  • Step 3: Package and generate the component
  • Step 4: View sample composer.json

Step 1: Setup a Magento Composer file (composer.json)

The composer.json file allows specifying the name, requirements, version, and some of other basic information about the component you are concerning. However, you need to save this file in the root directory of the module.

The composer.json uses Composer’s generic schema, with some requirements:

Element Description
name A fully-qualified component name, in the format <vendor-name>/module-<component-name>. All letters must be in lowercase. Use dashes in the <component-name> to separate words.
type For modules, this value must be set to magento2-module. Other possible types are metapackage, magento2-theme, and magento2-language.
autoload Specify necessary information to be loaded, such as [registration.php](extension-dev-guide/build/component-registration.html). For more information, see Autoloading from Composer.

In Magento Marketplace, there are a number of the acceptable component types. Each component type is corresponding to one composer type in the next column of the following table. And the value of the type field you must add to composer.json for that type of component.

Friendly name composer.json `type`
Metapackage metapackage
Module magento2-module
Theme magento2-theme
Language package magento2-language

Let’s take the below example for 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"
    ]
}

And the following example is the composer.json file for a module:

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

Step 2: Register the component using registration.php

Next, you must register the component through registration.php.

Step 3: Package and generate the component

It is time to work with the directory of your extension, let’s apply a zip operation as the following snippet to add a package:

zip -r vendor-name_package-name-1.0.0.zip package-path/ -x 'package-path/.git/*'

There are some notes in the zip operation:

  • Don’t leave white spaces among the words
  • Insert alphanumeric characters as dashes

Like that, your extension package will be fetched from any valid GitHub URL.

Step 4: View sample composer.json

File: 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": "[email protected]",
      "homepage": "https://www.mageplaza.com",
      "role": "Leader"
    }
  ],
  "autoload": {
    "files": [
      "registration.php"
    ],
    "psr-4": {
      "Mageplaza\\Seo\\": ""
    }
  }
}

File: 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": "[email protected]",
      "homepage": "https://www.mageplaza.com",
      "role": "Leader"
    }
  ],
  "autoload": {
    "files": [
      "registration.php"
    ],
    "psr-4": {
      "Mageplaza\\SocialLogin\\": ""
    }
  }
}


Next tutorial:

Module Development Series



Enjoyed the tutorial? Spread it to your friends!

magento-2-tutorial
package
module

Comments for How to Package Module in Magento 2?

Please leave comments if you have any questions, feedbacks.

Module Development

You also may like these Magento 2 Extensions

One Step Checkout

$199
10 reviews

Layered Navigation

$99
12 reviews

SEO

FREE
no review

Shop By Brand

$99
3 reviews

People also searched for:

  • magento 2 package module
  • magento 2 custom module development tutorial
  • magento 2 module creator
  • magento 2 module.xml sequence
  • magento 2 hello world module
  • magento 2 install module
  • how to install magento 2 extension from zip file
  • how to create package extension in magento 2
  • how to package an extension in magento 2
  • how to package magento 2 module
  • how to create module in magento 2 admin