Command Line Interface (CLI)

Strapi comes with a full featured Command Line Interface (CLI) which lets you scaffold and manage your project in seconds.


strapi new

Create a new project

strapi new <name>

options: [--dev]
  • strapi new <name>
    Generates a new project called <name> and installs the default plugins through the npm registry.

  • strapi new <name> --dev
    Generates a new project called <name> and creates symlinks for the ./admin folder and each plugin inside the ./plugin folder. It means that the Strapi's development workflow has been set up on the machine earlier.

    See the CONTRIBUTING guide for more details.


strapi generate:api

Scaffold a complete API with its configurations, controller, model and service.

strapi generate:api <name> [<attribute:type>]

options: [--tpl <name>|--plugin <name>]
  • strapi generate:api <name>
    Generates an API called <name> in the ./api folder at the root of your project.

  • strapi generate:api <name> <attribute:type>
    Generates an API called <name> in the ./api folder at the root of your project. The model will already contain an attribute called <attribute> with the type property set to <type>.

    Example: strapi generate:api product name:string description:text price:integer

  • strapi generate:api <name> --plugin <plugin>
    Generates an API called <name> in the ./plugins/<plugin> folder.

    Example: strapi generate:api product --plugin content-manager

  • strapi generate:api <name> --tpl <template>
    Generates an API called <name> in the ./api folder which works with the given <template>. By default, the generated APIs are based on Mongoose.

    Example: strapi generate:api product --tpl bookshelf

Note: The first letter of the filename will be uppercased.

strapi generate:controller

Create a new controller

strapi generate:controller <name>

options: [--api <name>|--plugin <name>]
  • strapi generate:controller <name>
    Generates an empty controller called <name> in the ./api/<name>/controllers folder.

    Example: strapi generate:controller category will create the controller at ./api/category/controllers/Category.js.

  • strapi generate:controller <name> --api <api>
    Generates an empty controller called <name> in the ./api/<api>/controllers folder.

    Example: strapi generate:controller category --api product will create the controller at ./api/product/controllers/Category.js.

  • strapi generate:controller <name> --plugin <plugin>
    Generates an empty controller called <name> in the ./plugins/<plugin>/controllers folder.

Note: The first letter of the filename will be uppercased.

strapi generate:model

Create a new model

strapi generate:model <name> [<attribute:type>]

options: [--api <name>|--plugin <name>]
  • strapi generate:model <name>
    Generates an empty model called <name> in the ./api/<name>/models folder. It will create two files. The first one will be <name>.js which contains your lifecycle callbacks and another <name>.settings.json that will list your attributes and options.

    Example: strapi generate:model category will create these two files ./api/category/models/Category.js and ./api/category/models/Category.settings.json.

  • strapi generate:model <name> <attribute:type>
    Generates an empty model called <name> in the ./api/<name>/models folder. The file <name>.settings.json will already contain a list of attribute with their associated <type>.

    Example: strapi generate:model category name:string description:text will create these two files ./api/category/models/Category.js and ./api/category/models/Category.settings.json. This last file will contain two attributes name with the type string and description with type text.

  • strapi generate:model <name> --api <api>
    Generates an empty model called <name> in the ./api/<api>/models folder.

    Example: strapi generate:model category --api product will create these two files:

    • ./api/product/models/Category.js
    • ./api/product/models/Category.settings.json.
  • strapi generate:model <name> --plugin <plugin>
    Generates an empty model called <name> in the ./plugins/<plugin>/models folder.

Note: The first letter of the filename will be uppercased.

strapi generate:service

Create a new service

strapi generate:service <name>

options: [--api <name>|--plugin <name>]
  • strapi generate:service <name>
    Generates an empty service called <name> in the ./api/<name>/services folder.

    Example: strapi generate:service category will create the service at ./api/category/services/Category.js.

  • strapi generate:service <name> --api <api>
    Generates an empty service called <name> in the ./api/<api>/services folder.

    Example: strapi generate:service category --api product will create the service at ./api/product/services/Category.js.

  • strapi generate:service <name> --plugin <plugin>
    Generates an empty service called <name> in the ./plugins/<plugin>/services folder.

Note: The first letter of the filename will be uppercased.

strapi generate:policy

Create a new policy

strapi generate:policy <name>

options: [--api <name>|--plugin <name>]
  • strapi generate:policy <name>
    Generates an empty policy called <name> in the ./config/policies folder.

    Example: strapi generate:policy isAuthenticated will create the policy at ./config/policies/isAuthenticated.js.

  • strapi generate:policy <name> --api <api>
    Generates an empty policy called <name> in the ./api/<api>/config/policies folder. This policy will be scoped and only accessible by the <api> routes.

    Example: strapi generate:policy isAuthenticated --api product will create the policy at ./api/product/config/policies/isAuthenticated.js.

  • strapi generate:policy <name> --plugin <plugin>
    Generates an empty policy called <name> in the ./plugins/<plugin>/config/policies folder. This policy will be scoped and accessible only by the <plugin> routes.

strapi generate:plugin

Create a new plugin skeleton.

strapi generate:plugin <name>
  • strapi generate:plugin <name>
    Generates an empty plugin called <name> in the ./plugins folder.

    Example: strapi generate:plugin user will create the plugin at ./plugins/user.

Please refer to the plugin develoment documentation to know more.


strapi install

Install a plugin in the project.

strapi install <name>

options: [--dev]
  • strapi install <name>
    Installs a plugin called <name> in the ./plugins folder.

    Example: strapi install content-type-builder will install the plugin at ./plugins/content-type-builder.

  • strapi install <name> --dev
    It will create a symlink from the local Strapi repository plugin folder called <name> in the ./plugins folder.

    Example: strapi install content-type-builder --dev will create a symlink from /path/to/the/repository/packages/strapi-plugin-content-type-builder to ./plugins/content-type-builder.

Checkout the CONTRIBUTING guide for more details about the local Strapi development workflow.

Note: You have to restart the server to load the plugin into your project.

Please refer to the plugins documentation to know more.


strapi uninstall

Uninstall a plugin from the project.

strapi uninstall <name>
  • strapi uninstall <name>
    Uninstalls a plugin called <name> in the ./plugins folder.

    Example: strapi uninstall content-type-builder will remove the folder at ./plugins/content-type-builder.

Please refer to the plugins documentation to know more.


strapi version

Print the current globally installed Strapi version.

strapi version

strapi help

List CLI commands.

strapi help

results matching ""

    No results matching ""