Magento 2.0.18 is the final 2.0.x release. After March 2018, Magento 2.0.x will no longer receive security patches, quality fixes, or documentation updates.
To maintain your site's performance, security, and PCI compliance, upgrade to the latest version of Magento.

How to add CLI commands

Overview of adding CLI commands

Magento enables your component to add commands to our Symfony-like command-line interface (CLI).

About the Magento CLI

Magento has one command-line interface that performs both installation and configuration tasks: <your Magento install dir>/bin/magento. The new interface performs multiple tasks, including:

  • Installing Magento (and related tasks such as creating or updating the database schema, creating the deployment configuration, and so on).
  • Clearing the cache.
  • Managing indexes, including reindexing.
  • Creating translation dictionaries and translation packages.
  • Generating non-existent classes such as factories and interceptors for plug-ins, generating the dependency injection configuration for the object manager.
  • Deploying static view files.
  • Creating CSS from Less.

Other benefits:

  • A single command (php <your Magento install dir>/bin/magento list) lists all available installation and configuration commands.
  • Consistent user interface based on Symfony.
  • The CLI is extensible so third party developers can “plug in” to it. This has the additional benefit of eliminating users’ learning curve.
  • Commands for disabled modules do not display.


Before you begin, make sure you understand the following:

Add CLI commands using dependency injection

The Magento 2 sample modules provide a demonstration of many programming techniques, including adding a CLI command using dependency injection . Look at the sample-module-command for an example. The module’s discusses how to install it.

Following is a summary of the process:

  1. Create a Command class (the recommended location is <your component root dir>/Console/Command).

    See app/code/Magento/CommandExample/Console/Command for examples.

  2. Declare your Command class in Magento\Framework\Console\CommandListInterface using dependency injection (<your component root dir>/etc/di.xml).
  3. Clean the cache and compiled code directories:

    cd <your Magento install dir>/var
    rm -rf cache/* page_cache/* di/* generation/* 

Add CLI commands using the Composer autoloader

To be added at a later time.

Command naming guidelines