Command Line Interface (CLI)
Strapi comes with a full featured Command Line Interface (CLI) which lets you scaffold and manage your project in seconds. The CLI works with both the yarn
and npm
package managers.
Interactive commands such as strapi admin:create-user
don't display prompts with npm
. A fix for the npm
package manager is anticipated by March 2023. In the meantime, consider using the yarn
package manager.
It is recommended to install Strapi locally only, which requires prefixing all of the following strapi
commands with the package manager used for the project setup (e.g npm run strapi help
or yarn strapi help
) or a dedicated node package executor (e.g. npx strapi help
).
To pass options with npm
use the syntax: npm run strapi <command> -- --<option>
.
To pass options with yarn
use the syntax: yarn run strapi <command> --<option>
strapi newβ
Create a new project.
strapi new <name>
options: [--no-run|--use-npm|--debug|--quickstart|--dbclient=<dbclient> --dbhost=<dbhost> --dbport=<dbport> --dbname=<dbname> --dbusername=<dbusername> --dbpassword=<dbpassword> --dbssl=<dbssl> --dbauth=<dbauth> --dbforce]
strapi new <name>
Generates a new project called <name> and installs the default plugins through the npm registry.strapi new <name> --debug
Will display the full error message if one is fired during the database connection.strapi new <name> --quickstart
Use the quickstart system to create your app.strapi new <name> --quickstart --no-run
Use the quickstart system to create your app, and do not start the application after creation.strapi new <name> --dbclient=<dbclient> --dbhost=<dbhost> --dbport=<dbport> --dbname=<dbname> --dbusername=<dbusername> --dbpassword=<dbpassword> --dbssl=<dbssl> --dbauth=<dbauth> --dbforce
Generates a new project called <name> and skip the interactive database configuration and initialize with these options.
- <dbclient> can be
postgres
,mysql
. - --dbforce Allows you to overwrite content if the provided database is not empty. Only available for
postgres
,mysql
, and is optional.
- <dbclient> can be
strapi developβ
Alias: dev
Start a Strapi application with autoReload enabled.
Strapi modifies/creates files at runtime and needs to restart when new files are created. To achieve this, strapi develop
adds a file watcher and restarts the application when necessary.
Strapi also adds middlewares to support HMR (Hot Module Replacement) for the administration panel. This allows you to customize the administration panel without having to restart the application or run a separate server. This is only added when you use the --watch-admin
command.
strapi develop
Option | Type | Description | Default |
---|---|---|---|
--bundler | string | Specifies the bundler to use, either webpack or vite x | webpack |
-d, --debug | - | Enable debugging mode with verbose logs | false |
--ignore-prompts | - | Ignore all prompts | false |
--open | - | Open the admin in your browser (default: true) | false |
--polling | - | Watch for file changes in network directories | false |
--silent | - | Don't log anything | false |
--watch-admin | - | Watch the admin panel for hot changes | false |
--no-build | - | [DEPRECATED] Starts your application with the autoReload enabled and skip the administration panel build process | - |
--browser | string | [DEPRECATED] Provide a browser name to use instead of the default one | - |
You should never use this command to run a Strapi application in production.
Using the vite
option as a bundler is considered experimental.
strapi startβ
Start a Strapi application with autoReload disabled.
This command is to run a Strapi application without restarts and file writes, primarily for use in production.
Certain features such as the Content-type Builder are disabled in the strapi start
mode because they require application restarts. The start
command can be prefaced with environment variables to customize the application start.
strapi buildβ
Builds your admin panel.
strapi build
Option | Type | Description | Default |
---|---|---|---|
--bundler | string | Specifies the bundler you'd like to use, either webpack or vite | webpack |
-d, --debug | - | Enable debugging mode with verbose logs | false |
--minify | - | Minify the output | true |
--no-optimization | - | [DEPRECATED]: use minify instead | - |
--silent | - | Don't log anything | false |
--sourcemaps | - | Produce sourcemaps | false |
--stats | - | Print build statistics to the console | false |
Using the vite
option as a bundler is considered experimental.
strapi watch-adminβ
This has been deprecated, the admin panel is watched as part of the develop
command.
Starts the admin server. Strapi should already be running with strapi develop
.
strapi watch-admin
options: [--browser <name>]
strapi exportβ
Exports your project data. The default settings create a .tar
file, compressed using gzip
and encrypted using aes-128-ecb
.
strapi export
The exported file is automatically named using the format export_YYYYMMDDHHMMSS
with the current date and timestamp. Alternately, you can specify the filename using the -f
or --file
flag. The following table provides all of the available options as command line flags:
Option | Type | Description |
---|---|---|
ββnoβencrypt | - | Disables file encryption and disables the key option. |
ββnoβcompress | - | Disables file compression. |
-k , --key | string | Passes the encryption key as part of the export command. The --key option can't be combined with --no-encrypt . |
-f , --file | string | Specifies the export filename. Do not include a file extension. |
--exclude | string | Exclude data using comma-separated data types. The available types are: content , files , and config . |
--only | string | Include only these data. The available types are: content , files , and config . |
-h , --help | - | Displays help for the strapi export command. |
Examples
# export your data with the default options and the filename myData, which results in a file named myData.tar.gz.enc.
strapi export -f myData
# export your data without encryption.
strapi export --no-encrypt
strapi importβ
Imports data into your project. The imported data must originate from another Strapi application. You must pass the --file
option to specify the filename and location for the import action.
strapi import
Option | Type | Description |
---|---|---|
-k, --key | string | Provide the encryption key in the command instead of a subsequent prompt. |
-f , --file | string | Path and filename with extension for the data to be imported. |
-h , --help | - | Display the strapi import help commands. |
Examples
# import your data with the default parameters and pass an encryption key:
strapi import -f your-filepath-and-filename --key my-key
strapi transferβ
Transfers data between 2 Strapi instances. This command is primarily intended for use between a local instance and a remote instance or 2 remote instances. The transfer
command requires a Transfer token, which is generated in the destination instance Admin panel. See the User Guide for detailed documentation on creating Transfer tokens.
The destination Strapi instance should be running with the start
command and not the develop
command.
Option | Description |
---|---|
--to [destinationURL] | Full URL of the /admin endpoint on the destination Strapi instance(e.g. --to https://my-beautiful-strapi-website/admin ) |
--to-token [transferToken] | Transfer token for the remote Strapi destination |
--from [sourceURL] | Full URL of the /admin endpoint of the remote Strapi instance to pull data from(e.g., --from https://my-beautiful-strapi-website/admin ) |
ββfromβtoken | Transfer token from the Strapi source instance. |
--force | Automatically answer "yes" to all prompts, including potentially destructive requests, and run non-interactively. |
--exclude | Exclude data using comma-separated data types. The available types are: content , files , and config . |
--only | Include only these data. The available types are: content , files , and config . |
-h , --help | Displays the commands for strapi transfer . |
Either --to
or --from
is required, but it's not currently allowed to enter both or neither.
Example
strapi transfer --to http://example.com/admin --to-token my-transfer-token
strapi reportβ
Prints out debug information useful for debugging and required when reporting an issue.
Option | Description |
---|---|
-u , --uuid | Includes the project UUID |
-d , --dependencies | Includes project dependencies |
--all | Logs all the data |
Examples
To include the project UUID and dependencies in the output:
strapi report --uuid --dependencies
To log everything, use the --all
option:
strapi report --all
strapi configuration:dumpβ
Alias: config:dump
Dumps configurations to a file or stdout to help you migrate to production.
The dump format will be a JSON array.
Options:
-f, --file <file> Output file, default output is stdout
-p, --pretty Format the output JSON with indentation and line breaks (default: false)
Examples
strapi configuration:dump -f dump.json
strapi config:dump --file dump.json
strapi config:dump > dump.json
All these examples are equivalent.
When configuring your application you often enter credentials for third party services (e.g authentication providers). Be aware that those credentials will also be dumped into the output of this command. In case of doubt, you should avoid committing the dump file into a versioning system. Here are some methods you can explore:
- Copy the file directly to the environment you want and run the restore command there.
- Put the file in a secure location and download it at deploy time with the right credentials.
- Encrypt the file before committing and decrypt it when running the restore command.
strapi configuration:restoreβ
Alias: config:restore
Restores a configuration dump into your application.
The input format must be a JSON array.
strapi configuration:restore
Options:
-f, --file <file> Input file, default input is stdin
-s, --strategy <strategy> Strategy name, one of: "replace", "merge", "keep". Defaults to: "replace"
Examples
strapi configuration:restore -f dump.json
strapi config:restore --file dump.json -s replace
cat dump.json | strapi config:restore
strapi config:restore < dump.json
All these examples are equivalent.
Strategies
When running the restore command, you can choose from three different strategies:
- replace: Will create missing keys and replace existing ones.
- merge: Will create missing keys and merge existing keys with their new value.
- keep: Will create missing keys and keep existing keys as is.
strapi admin:create-userβ
Alias admin:create
Creates an administrator. Administrator's first name, last name, email, and password can be:
- passed as options
- or set interactively if you call the command without passing any option.
Example
strapi admin:create-user --firstname=Kai --lastname=Doe --email=chef@strapi.io --password=Gourmet1234
Options
Option | Type | Description | Required |
---|---|---|---|
-f, --firstname | string | The administrator's first name | Yes |
-l, --lastname | string | The administrator's last name | No |
-e, --email | string | The administrator's email | Yes |
-p, --password | string | New password for the administrator | No |
-h, --help | display help for command |
strapi admin:reset-user-passwordβ
Alias admin:reset-password
Reset an admin user's password. You can pass the email and new password as options or set them interactively if you call the command without passing the options.
Example
strapi admin:reset-user-password --email=chef@strapi.io --password=Gourmet1234
Options
Option | Type | Description |
---|---|---|
-e, --email | string | The user email |
-p, --password | string | New password for the user |
-h, --help | display help for command |
strapi generateβ
Run a fully interactive CLI to generate APIs, controllers, content-types, plugins, policies, middlewares and services, and migrations.
strapi generate
strapi templates:generateβ
Create a template from the current Strapi project.
strapi templates:generate <path>
strapi templates:generate <path>
Generates a Strapi template at<path>
Example:
strapi templates:generate ../strapi-template-name
will copy the required files and folders to atemplate
directory inside../strapi-template-name
strapi ts:generate-typesβ
Generate TypeScript typings for the project schemas.
strapi ts:generate-types
- strapi ts:generate-types --debug
[DEPRECATED] strapi ts:generate-types --verbose
Generate typings with the debug mode enabled, displaying a detailed table of the generated schemas. - strapi ts:generate-types --silent or strapi ts:generate-types -s
Generate typings with the silent mode enabled, completely removing all the logs in the terminal. Cannot be combined withverbose
ordebug
- strapi ts:generate-types --out-dir <path> or strapi ts:generate-types -o <path>
Generate typings specifying the output directory in which the file will be created.
Strapi requires the project types to be generated in the types
directory for them to work. The --out-dir
option should not be used for most cases. However, it can be useful for cases such as generating a second copy to compare the difference between your existing and updated types after changing your content structure.
strapi routes:listβ
Display a list of all the available routes.
strapi routes:list
strapi policies:listβ
Display a list of all the registered policies.
strapi policies:list
strapi middlewares:listβ
Display a list of all the registered middlewares.
strapi middlewares:list
strapi content-types:listβ
Display a list of all the existing content-types.
strapi content-types:list
strapi hooks:listβ
Display a list of all the available hooks.
strapi hooks:list
strapi controllers:listβ
Display a list of all the registered controllers.
strapi services:listβ
Display a list of all the registered services.
strapi services:list
strapi installβ
Install a plugin in the project.
strapi install <name>
strapi install <name>
Installs a plugin called <name>.Example:
strapi install graphql
will install the plugin@strapi/plugin-graphql
Some plugins have admin panel integrations, your admin panel might have to be rebuilt. This can take some time.
strapi uninstallβ
Uninstall a plugin from the project.
strapi uninstall <name>
options [--delete-files]
strapi uninstall <name>
Uninstalls a plugin called <name>.Example:
strapi uninstall graphql
will remove the plugin@strapi/plugin-graphql
strapi uninstall <name> --delete-files
Uninstalls a plugin called <name> and removes the files in./extensions/name/
Example:
strapi uninstall graphql --delete-files
will remove the plugin@strapi/plugin-graphql
and all the files in./extensions/graphql
- In addition to the
uninstall
command you need to remove the plugin configuration from./config/plugins.js
. - Some plugins have admin panel integrations, your admin panel might have to be rebuilt. This can take some time. :::
strapi telemetry:disableβ
Disable data collection for the project (see Usage Information).
strapi telemetry:disable
strapi telemetry:enableβ
Re-enable data collection for the project after it was disabled (see Usage Information).
strapi telemetry:enable
strapi consoleβ
Start the server and eval commands in your application in real time.
strapi console
strapi versionβ
Print the current globally installed Strapi version.
strapi version
strapi helpβ
List CLI commands.
strapi help