Register your component

Magento components, including modules, themes, and language packages, must be registered in the Magento system through the Magento ComponentRegistrar class.

Each component must have a file called registration.php in its root directory. For example, here is the registration.php file for Magento’s AdminNotification module. Depending on the type of component, registration is performed through registration.php by adding to it as follows:

Register modules

Register modules with:

1
ComponentRegistrar::register(ComponentRegistrar::MODULE, '<VendorName_ModuleName>', __DIR__);

Here <VendorName> is the name of the company providing the module and <ModuleName> is the name of the module.

Avoid using “Ui” for your custom module name because the %Vendor%_Ui notation, required when specifying paths, might cause issues.

Example

1
2
3
use Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(ComponentRegistrar::MODULE, 'Magento_AdminNotification', __DIR__);

Register themes

Register themes with:

1
ComponentRegistrar::register(ComponentRegistrar::THEME, '<area>/<vendor>/<theme name>', __DIR__);

Here <area> is the functional area of the module (frontend, controller, and so on.), <vendor> is the name of the company providing the theme, and <theme name> is the name of the theme.

Example

1
2
3
use Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(ComponentRegistrar::THEME, 'frontend/Magento/luma', __DIR__);

Register language packages

Register language packages with:

1
ComponentRegistrar::register(ComponentRegistrar::LANGUAGE, '<VendorName>_<packageName>', __DIR__);

Here <VendorName> is the name of the company providing the package and <packageName> is the name of the package.

Example

1
2
3
use Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(ComponentRegistrar::LANGUAGE, 'magento_de_de', __DIR__);

Register libraries

Libraries should be registered using

1
ComponentRegistrar::register(ComponentRegistrar::LIBRARY, '<vendor>/<library_name>', __DIR__);

Here <vendor> is the name of the company providing the library. <library_name> is the library name.

Example

1
2
3
use Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(ComponentRegistrar::LIBRARY, 'magento/framework', __DIR__);

Invoke registration.php in composer.json with autoload

After you create your registration.php file and you are creating your component’s composer.json file, invoke your registration.php file in the autoload section of composer.json:

1
2
3
4
5
6
7
{
 "name": "Acme-vendor/bar-component",
 "autoload": {
    "psr-4": { "AcmeVendor\\BarComponent\\": "" },
    "files": [ "registration.php" ]
 }
}

Sample registration.php file

1
2
3
use Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(ComponentRegistrar::MODULE, 'Magento_AdminNotification', __DIR__);

Next step

URN schema validation