命令行接口 (CLI)
🌐 Command Line Interface (CLI)
Page summary:Strapi 带有功能齐全的命令行接口(CLI),使你可以在几秒钟内搭建和管理项目。CLI 可与
yarn和npm包管理器一起使用。🌐 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
yarnandnpmpackage managers.
本页上的 Strapi CLI 命令按类别分组:
🌐 Strapi CLI commands on the present page are grouped by category:
| 类别 | 命令 |
|---|---|
| 开发 | develop, start, build, console |
| 云 | login, link, deploy, logout |
| 数据管理 | export, import, transfer |
| 项目信息 | report, telemetry:disable, telemetry:enable, version, help |
| 配置 | configuration:dump, configuration:restore |
| 管理 | admin:create-user, admin:reset-user-password, admin:list-users, admin:active-user, admin:block-user, admin:delete-user |
| 代码生成 | generate, openapi generate, templates:generate, ts:generate-types, rename:field |
| 列表 | routes:list, policies:list, middlewares:list, content-types:list, hooks:list, controllers:list, services:list |
| 企业 | enterprise install |
像 strapi admin:create-user 这样的交互命令在使用 npm 时不会显示提示。请考虑使用 yarn 包管理器。
🌐 Interactive commands such as strapi admin:create-user don't display prompts with npm. Please consider using the yarn package manager.
一般考虑
🌐 General considerations
建议仅在本地安装 Strapi,这需要在所有以下 strapi 命令前加上用于项目设置的包管理器(例如 npm run strapi help 或 yarn strapi help)或专用的 node 包执行器(例如 npx strapi help)。
🌐 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).
- 要使用
npm传递选项,请使用以下语法:
npm run strapi <command> -- --<option>。 - 要使用
yarn传递选项,请使用以下语法:
yarn strapi <command> --<option>
ℹ️ Strapi v4 CLI 命令已从 Strapi 5 中移除:
Strapi v4 的 strapi install、strapi uninstall、strapi new 和 strapi watch-admin 命令在 Strapi 5 中已被移除:
🌐 The strapi install, strapi uninstall, strapi new, and strapi watch-admin commands from Strapi v4 have been removed in Strapi 5:
| Strapi v4 命令 | Strapi 5 对应命令 |
|---|---|
strapi install [plugin] | 使用对应插件的 npx 命令(可在市场中找到,见 Marketplace) |
strapi new | 使用相应的 yarn 或 npx 命令来创建新的 Strapi 项目(见 CLI 安装指南) |
strapi watch-admin | yarn develop 或 npm run develop 总是在“watch-admin”模式下启动 Strapi 服务器。要在 Strapi 5 中禁用此功能,请运行 yarn develop --no-watch-admin 或 npm run develop --no-watch-admin。 |
新项目的安全默认设置
🌐 Security defaults for new projects
使用 create-strapi-app 搭建的项目在生成的 config/ 文件和 .env 中包含预配置的安全加固默认设置:
🌐 Projects scaffolded with create-strapi-app include security-hardened defaults pre-configured in the generated config/ files and .env:
| 默认 | 配置位置 | 作用 |
|---|---|---|
rest.strictParams: true 和 documents.strictParams: true | config/api.* | 拒绝包含未知查询或请求体参数的请求(详见 API 配置)。 |
jwtManagement: 'refresh' 和 sessions.httpOnly: true | config/plugins.*(用户权限) | 启用基于刷新令牌的认证,并使用 HTTP-only 会话 cookie 处理用户与权限功能(详见 用户与权限)。 |
upload.config.security.allowedTypes 和 upload.config.security.deniedTypes | config/plugins.*(上传) | 限制上传到批准的文件类型,并阻止危险的 MIME 类型(详见 媒体库)。 |
JWT_SECRET | .env | 在脚手架生成的 .env 文件中会包含一个随机生成的密钥。 |
所有默认设置都可以在相应的配置文件中进行调整,以符合你项目的需求。
🌐 All defaults can be adjusted in the corresponding configuration files to match your project's requirements.
发展
🌐 Development
这些命令在开发过程中启动并构建你的 Strapi 应用。
🌐 These commands start and build your Strapi application during development.
strapi develop
别名: dev
启动一个启用自动重新加载的 Strapi 应用。
🌐 Start a Strapi application with auto-reloading enabled.
Strapi 在运行时会修改/创建文件,并且在创建新文件时需要重启。为实现这一点,strapi develop 添加了一个文件监视器,并在必要时重启应用。
🌐 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 还添加了中间件来支持管理面板的 HMR(热模块替换)。这使你可以在无需重启应用或运行单独服务器的情况下自定义管理面板。
🌐 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.
strapi develop
options: [--bundler | --open | --no-watch-admin | --no-build-admin | --polling | --debug | --silent]
- strapi develop --bundler [bundler]
选择用于管理面板构建的打包器(vite或webpack)。 - strapi develop --open
启动你的应用并启用自动重载,同时用默认浏览器打开正在运行的管理面板。 - strapi develop --no-watch-admin
当对管理员面板代码进行更改时,防止服务器自动重载。 - strapi develop --no-build-admin
当启用--no-watch-admin时,防止构建管理员面板。 - strapi develop --polling
监视网络目录中的文件更改。 - strapi develop --debug
启用带有详细日志的调试模式。 - strapi develop --silent
抑制日志。 - strapi develop --install-deps
自动安装缺失的管理员同伴依赖 (react,react-dom,react-router-dom,styled-components)。此功能默认启用。 - strapi develop --no-install-deps
跳过自动安装缺失的管理员同级依赖,如果有任何缺失将立即失败。
你永远不应该使用此命令在生产环境中运行 Strapi 应用。
🌐 You should never use this command to run a Strapi application in production.
strapi start
启动一个禁用自动重新加载的 Strapi 应用。
🌐 Start a Strapi application with auto-reloading disabled.
此命令用于在不重启和不写入文件的情况下运行 Strapi 应用,主要用于生产环境。
某些功能,例如内容类型构建器,在 strapi start 模式下被禁用,因为它们需要应用重启。start 命令可以通过在前面添加 环境变量 来自定义应用启动。
🌐 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
| 选项 | 类型 | 描述 |
|---|---|---|
-d, --debug | - | 启用带详细日志的调试模式(默认:false) |
--minify | - | 压缩输出(默认:true) |
--no-optimization | - | [已弃用]:请改用压缩功能 |
--silent | - | 不记录任何日志(默认:false) |
--sourcemaps | - | 生成 source map(默认:false) |
--stats | - | 将构建统计输出到控制台(默认:false) |
--install-deps | - | 自动安装缺失的管理员依赖(默认:false) |
--no-install-deps | - | 跳过自动安装,如果依赖缺失则失败(默认:true) |
strapi console
启动服务器并实时执行应用中 的命令。
🌐 Start the server and evaluate commands in your application in real time.
strapi console
console 命令会编译并加载你的应用,在后台启动服务器,然后打开一个 Node.js REPL。REPL 提供基于你应用名称的提示符,并通过全局 strapi 对象访问所有 Strapi API。 通过连续按 Ctrl-C 两次关闭 REPL 可以优雅地停止服务器。
可用的助手
🌐 Available helpers
strapi 对象提供以下 getter 和方法来与你的应用进行交互:
🌐 The strapi object exposes the following getters and methods to interact with your application:
-
strapi.services和strapi.service(uid)使用 服务 -
strapi.controllers和strapi.controller(uid)调用 控制器 -
strapi.contentTypes和strapi.contentType(uid)检查 内容类型 -
strapi.components列出组件 -
strapi.policies和strapi.policy(name)用于 政策 -
strapi.middlewares和strapi.middleware(name)用于 中间件 -
strapi.plugins和strapi.plugin(name)用于插件 -
strapi.hooks和strapi.hook(name)用于钩子 -
strapi.apis和strapi.api(name)用于 API -
strapi.db通过 查询引擎 API 直接查询数据库,例如如下所示:await strapi.db.query('api::article.article').findMany();
使用此环境测试代码并检查你的项目,并直接访问所有 Strapi API。
🌐 Use this environment to test code and inspect your project with direct access to all Strapi APIs.
Strapi 使用 Node.js 的一个名为 AsyncLocalStorage 的功能来使上下文在任何地方都可用。
云
🌐 Cloud
这些命令与 Strapi Cloud 交互。有关详细信息,请参阅 Cloud CLI 文档。
🌐 These commands interact with Strapi Cloud. See the Cloud CLI documentation for details.
strapi login
登录到 Strapi Cloud(请参阅 Cloud CLI 文档)。
🌐 Logs in to Strapi Cloud (see Cloud CLI documentation).
strapi link
将本地项目链接到现有的 Strapi Cloud 项目(参见 Cloud CLI 文档)。
🌐 Links the local project to an existing Strapi Cloud project (see Cloud CLI documentation).
strapi deploy
将关联的本地项目部署到 Strapi 云(参见 Cloud CLI 文档)。
🌐 Deploys a linked local project to Strapi Cloud (see Cloud CLI documentation).
strapi logout
从 Strapi Cloud 登出(参见 Cloud CLI 文档)。
🌐 Logs out from Strapi Cloud (see Cloud CLI documentation).
数据管理
🌐 Data management
这些命令用于在 Strapi 实例之间导出、导入和传输数据。
🌐 These commands export, import, and transfer data between Strapi instances.
strapi export
导出你的项目数据。默认设置会创建一个 .tar 文件,使用 gzip 压缩并使用 aes-128-ecb 加密。
strapi export
该归档包含如 configuration、entities、links 和 schemas 的文件夹,数据存储在 JSON lines 文件中。使用 --no-encrypt --no-compress 生成可读取的 .tar,可以进行检查或转换为其他格式。
导出的文件会自动使用格式 export_YYYYMMDDHHMMSS,并带有当前日期和时间戳进行命名。或者,你可以使用 -f 或 --file 标志来指定文件名。下表提供了所有可用的命令行标志选项:
🌐 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:
| 选项 | 类型 | 描述 |
|---|---|---|
--no-encrypt | - | 禁用文件加密并禁用 key 选项。 |
--no-compress | - | 禁用文件压缩。 |
-k, --key | 字符串 | 作为 export 命令的一部分传递加密密钥。 --key 选项不能与 --no-encrypt 一起使用。 |
-f, --file | 字符串 | 指定导出文件名(tar)或输出目录路径(dir)。tar 导出不要包括文件扩展名。 |
--format | 字符串 | 导出格式:tar(默认)或 dir。目录导出需要 --no-encrypt。 |
--exclude | 字符串 | 使用逗号分隔的数据类型来排除数据。可用的类型有:content、files、config 和 media-library(同时排除上传的二进制文件和上传的内容类型记录)。 |
--only | 字符串 | 仅包含这些数据。可用类型有:content、files 和 config。 |
--exclude-content-types | 字符串 | 用逗号分隔的要从导出中排除的内容类型 UID 列表。涉及被排除类型的实体记录和关联链接都会被跳过 。 |
--only-content-types | 字符串 | 要包含在导出中的内容类型 UID 的逗号分隔列表。 |
-h, --help | - | 显示 strapi export 命令的帮助信息。 |
示例
使用自定义文件名导出数据(myData.tar.gz.enc):
🌐 Export data with a custom filename (myData.tar.gz.enc):
strapi export -f myData
导出数据而不加密:
🌐 Export data without encryption:
strapi export --no-encrypt
将数据导出为未打包的目录:
🌐 Export data as an unpacked directory:
strapi export --format dir --no-encrypt -f my-export
strapi import
将数据导入到你的项目中。导入的数据必须来自另一个 Strapi 应用。你必须传递 --file 选项以指定导入操作的文件或目录。
strapi import
该命令接受由 strapi export(.tar、.tar.gz、.tar.gz.enc)生成的归档文件以及已解压的导出目录。对于归档导入,压缩和加密会从文件名中检测。当 -f 指向一个目录时,压缩和加密将自动跳过。
🌐 The command accepts archives generated by strapi export (.tar, .tar.gz, .tar.gz.enc) and unpacked export directories. Compression and encryption are detected from the filename for archive imports. When -f points to a directory, encryption and compression are skipped automatically.
| 选项 | 类型 | 描述 |
|---|---|---|
-k, --key | 字符串 | 在命令中提供加密密钥,而不是在后续提示中输入。 |
-f, --file | 字符串 | 指向 .tar[.gz][.enc] 压缩包或已解压的导出目录的路径。 |
--exclude-content-types | 字符串 | 用逗号分隔的内容类型 UID 列表,用于排除在导入之外。涉及排除类型的实体记录和关系链接都会被跳过,且排除的类型会保留在目标中。 |
--only-content-types | 字符串 | 用逗号分隔的内容类型 UID 列表,用于包含在导入中。 |
-h, --help | - | 显示 strapi import 帮助命令。 |
示例
导入数据并传递加密密钥:
🌐 Import data and pass an encryption key:
strapi import -f your-filepath-and-filename --key my-key
从未打包的导出目录导入:
🌐 Import from an unpacked export directory:
strapi import -f ./my-export
strapi transfer
在两个 Strapi 实例之间传输数据。这个命令主要用于本地实例和远程实例之间,或者两个远程实例之间。transfer 命令需要一个传输令牌,该令牌在目标实例的管理面板中生成。有关创建传输令牌的详细文档,请参阅用户指南。
目标 Strapi 实例应该使用 start 命令运行,而不是 develop 命令。
🌐 The destination Strapi instance should be running with the start command and not the develop command.
| 选项 | 描述 |
|---|---|
--to [destinationURL] | 目标 Strapi 实例上 /admin 端点的完整 URL(例如 --to https://my-beautiful-strapi-website/admin) |
--to-token [transferToken] | 用于远程 Strapi 目的地的转账令牌 |
--from [sourceURL] | 要从远程 Strapi 实例拉取数据的 /admin 端点的完整 URL(例如, --from https://my-beautiful-strapi-website/admin) |
--from-token | 从 Strapi 源实例转移令牌。 |
--force | 自动对所有提示回答“是”,包括可能具有破坏性的请求,并以非交互方式运行。 |
--exclude | 使用逗号分隔的数据类型来排除数据。可用的数据类型有:content、files、config 和 media-library(排除上传的二进制文件和上传的内容类型记录)。 |
--only | 仅包含这些数据。可用的类型有:content、files 和 config。 |
--exclude-content-types | 要排除的内容类型 UID 的逗号分隔列表。任何涉及被排除类型的实体记录和关联链接都会被跳过。 |
--only-content-types | 要包含的内容类型 UID 的逗号分隔列表。只会传输列出的类型的实体记录和关联链接。 |
--throttle | 在每个传输的实体之间注入人工延迟的时间(毫秒)。 |
--no-checksums | 禁用资源的端到端 SHA-256 校验和验证。当源实例和目标实例都支持校验和验证时,默认启用校验和验证。 |
--verbose | 启用详细日志。 |
-h、--help | 显示 strapi transfer 的命令。 |
需要 --to 或 --from,但目前不允许同时输入两者或两者都不输入。
🌐 Either --to or --from is required, but it's not currently allowed to enter both or neither.
示例
strapi transfer --to http://example.com/admin --to-token my-transfer-token
项目信息
🌐 Project information
这些命令用于显示项目详情、管理遥测,并显示已安装的版本。
🌐 These commands display project details, manage telemetry, and show the installed version.
strapi report
打印出对调试有用且报告问题时所需的调试信息。
🌐 Prints out debug information useful for debugging and required when reporting an issue.
| 选项 | 描述 |
|---|---|
-u,--uuid | 包含项目 UUID |
-d,--dependencies | 包含项目依赖 |
--all | 记录所有数据 |
示例
要在输出中包含项目 UUID 和依赖:
🌐 To include the project UUID and dependencies in the output:
strapi report --uuid --dependencies
要记录所有内容,请使用 --all 选项:
🌐 To log everything, use the --all option:
strapi report --all
strapi telemetry:disable
禁用该项目的数据收集(请参阅 使用信息