命令参考
在本指南中,我们介绍框架核心和官方包附带的所有命令的用法。您也可以使用 node ace list 命令或 node ace <command-name> --help 命令查看命令帮助。
node ace list
TIP
帮助屏幕的输出按照 docopt 标准格式化。
serve
serve 使用 @adonisjs/assembler 包在开发环境中启动 AdonisJS 应用程序。您可以选择监听文件更改,并在每次文件更改时重启 HTTP 服务器。
node ace serve --hmrserve 命令通过 bin/server.ts 文件作为子进程启动开发服务器。如果您想将 node 参数 传递给子进程,可以在命令名称之前定义它们。
node ace --no-warnings --inspect serve --hmr以下是您可以传递给 serve 命令的可用选项列表。或者,使用 --help 标志查看命令帮助。
--hmr
监听文件系统并在 HMR 模式下重新加载服务器。
--watch
监听文件系统并在文件更改时始终重启进程。
--poll
使用轮询检测文件系统更改。当使用 Docker 容器进行开发时,您可能需要使用轮询。
--clear | --no-clear
在每次文件更改后和显示新日志之前清除终端。使用
--no-clear标志保留旧日志。--assets | --no-assets
与 AdonisJS HTTP 服务器一起启动资源打包开发服务器。使用
--no-assets标志关闭资源打包开发服务器。--assets-args
将命令行参数传递给资源管理器子进程。例如,如果您使用 vite,可以按如下方式定义其选项。
shnode ace serve --hmr --assets-args="--cors --open"
build
build 命令使用 @adonisjs/assembler 包创建 AdonisJS 应用程序的生产构建。执行以下步骤生成构建。
另请参阅:TypeScript 构建过程
node ace build以下是您可以传递给 build 命令的可用选项列表。或者,使用 --help 标志查看命令帮助。
--ignore-ts-errors
当项目存在 TypeScript 错误时,build 命令会终止构建过程。但是,您可以使用
--ignore-ts-errors标志忽略这些错误并完成构建。--package-manager
build 命令会将
package.json文件与应用程序使用的包管理器的锁文件一起复制。我们使用 @antfu/install-pkg 包检测包管理器。但是,您可以通过显式提供包管理器名称来关闭检测。
--assets | --no-assets
将前端资源与后端应用程序一起打包。使用
--no-assets标志关闭资源打包开发服务器。--assets-args
将命令行参数传递给资源管理器子进程。例如,如果您使用 vite,可以按如下方式定义其选项。
shnode ace build --assets-args="--sourcemap --debug"
add
add 命令结合了 npm install <package-name> 和 node ace configure 命令。因此,您可以使用 add 命令一次性安装和配置包,而无需运行两个单独的命令。
add 命令会自动检测您的应用程序使用的包管理器并使用它来安装包。但是,您始终可以使用 --package-manager CLI 标志选择特定的包管理器。
# 安装并配置 @adonisjs/lucid 包
node ace add @adonisjs/lucid
# 将包安装为开发依赖并配置它
node ace add my-dev-package --dev如果包可以使用标志进行配置,您可以直接将它们传递给 add 命令。每个未知标志都将传递给 configure 命令。
node ace add @adonisjs/lucid --db=sqlite--verbose
启用详细模式以显示包安装和配置日志。
--force
传递给
configure命令。配置包时强制覆盖文件。有关更多信息,请参阅configure命令。--package-manager
定义用于安装包的包管理器。值必须是
npm、pnpm、bun或yarn。--dev
将包安装为开发依赖。
configure
在安装包后配置它。该命令接受包名称作为第一个参数。
node ace configure @adonisjs/lucid--verbose
启用详细模式以显示包安装日志。
--force
AdonisJS 的存根系统不会覆盖现有文件。例如,如果您配置
@adonisjs/lucid包而您的应用程序已有config/database.ts文件,配置过程将不会覆盖现有配置文件。但是,您可以使用
--force标志强制覆盖文件。
eject
将存根从给定包导出到应用程序的 stubs 目录。在以下示例中,我们将 make/controller 存根复制到应用程序进行修改。
另请参阅:自定义存根
# 从 @adonisjs/core 包复制存根
node ace eject make/controller
# 从 @adonisjs/bouncer 包复制存根
node ace eject make/policy --pkg=@adonisjs/bouncergenerate:key
生成加密安全的随机密钥并将其作为 APP_KEY 环境变量写入 .env 文件。
另请参阅:App key
node ace generate:key--show
在终端显示密钥而不是写入
.env文件。默认情况下,密钥写入 env 文件。--force
当在生产环境中运行应用程序时,
generate:key命令不会将密钥写入.env文件。但是,您可以使用--force标志覆盖此行为。
make:controller
创建新的 HTTP 控制器类。控制器创建在 app/controllers 目录中,并使用以下命名约定。
- 形式:
plural(复数) - 后缀:
controller - 类名示例:
UsersController - 文件名示例:
users_controller.ts
node ace make:controller users您还可以使用自定义操作名称生成控制器,如以下示例所示。
# 生成带有 "index"、"show" 和 "store" 方法的控制器
node ace make:controller users index show store--singular
强制控制器名称为单数形式。
--resource
生成带有执行资源 CRUD 操作方法的控制器。
--api
--api标志类似于--resource标志。但是,它不定义create和edit方法,因为它们用于显示表单。
make:middleware
为 HTTP 请求创建新的中间件。中间件存储在 app/middleware 目录中,并使用以下命名约定。
- 形式:
singular(单数) - 后缀:
middleware - 类名示例:
BodyParserMiddleware - 文件名示例:
body_parser_middleware.ts
node ace make:middleware bodyparser--stack
通过显式定义堆栈来跳过中间件堆栈选择提示。值必须是
server、named或router。shnode ace make:middleware bodyparser --stack=router
make:event
创建新的事件类。事件存储在 app/events 目录中,并使用以下命名约定。
- 形式:
NA - 后缀:
NA - 类名示例:
OrderShipped - 文件名示例:
order_shipped.ts - 建议:您应该根据操作的生命周期命名事件。例如:
MailSending、MailSent、RequestCompleted等。
node ace make:event orderShippedmake:validator
创建新的 VineJS 验证器文件。验证器存储在 app/validators 目录中,每个文件可以导出多个验证器。
- 形式:
singular(单数) - 后缀:
NA - 文件名示例:
user.ts - 建议:您应该围绕应用程序的资源创建验证器文件。
# 用于管理用户的验证器
node ace make:validator user
# 用于管理帖子的验证器
node ace make:validator post--resource
创建带有预定义的
create和update操作验证器的验证器文件。shnode ace make:validator post --resource
make:listener
创建新的事件监听器类。监听器类存储在 app/listeners 目录中,并使用以下命名约定。
- 形式:
NA - 后缀:
NA - 类名示例:
SendShipmentNotification - 文件名示例:
send_shipment_notification.ts - 建议:事件监听器应根据其执行的操作命名。例如,发送发货通知邮件的监听器应命名为
SendShipmentNotification。
node ace make:listener sendShipmentNotification--event
与事件监听器一起生成事件类。
shnode ace make:listener sendShipmentNotification --event=shipment_received
make:service
创建新的服务类。服务类存储在 app/services 目录中,并使用以下命名约定。
TIP
服务没有预定义的含义,您可以使用它来提取应用程序内的业务逻辑。例如,如果您的应用程序生成大量 PDF,您可以创建一个名为 PdfGeneratorService 的服务并在多个地方重用它。
- 形式:
singular(单数) - 后缀:
service - 类名示例:
InvoiceService - 文件名示例:
invoice_service.ts
node ace make:service invoicemake:exception
创建新的自定义异常类。异常存储在 app/exceptions 目录中。
- 形式:
NA - 后缀:
exception - 类名示例:
CommandValidationException - 文件名示例:
command_validation_exception.ts
node ace make:exception commandValidationmake:command
创建新的 Ace 命令。默认情况下,命令存储在应用程序根目录的 commands 目录中。
当您尝试执行任何 Ace 命令时,AdonisJS 会自动导入此目录中的命令。您可以在文件名前加上 _ 前缀,以在此目录中存储非 Ace 命令的其他文件。
- 形式:
NA - 后缀:
NA - 类名示例:
ListRoutes - 文件名示例:
list_routes.ts - 建议:命令应根据其执行的操作命名。例如,
ListRoutes、MakeController和Build。
node ace make:command listRoutesmake:view
创建新的 Edge.js 模板文件。模板在 resources/views 目录中创建。
- 形式:
NA - 后缀:
NA - 文件名示例:
posts/view.edge - 建议:您应该将资源的模板分组到子目录中。例如:
posts/list.edge、posts/create.edge等。
node ace make:view posts/create
node ace make:view posts/listmake:provider
创建服务提供者文件。提供者存储在应用程序根目录的 providers 目录中,并使用以下命名约定。
- 形式:
singular(单数) - 后缀:
provider - 类名示例:
AppProvider - 文件名示例:
app_provider.ts
node ace make:provider app--environments
定义应导入提供者的环境。了解更多关于应用环境的信息
shnode ace make:provider app -e=web -e=console
make:preload
创建新的预加载文件。预加载文件存储在 start 目录中。
node ace make:preload view--environments
定义应导入预加载文件的环境。了解更多关于应用环境的信息
shnode ace make:preload view app -e=web -e=console
make:test
在 tests/<suite> 目录中创建新的测试文件。
- 形式:NA
- 后缀:
.spec - 文件名示例:
posts/list.spec.ts、posts/update.spec.ts
node ace make:test --suite=unit--suite
定义要为其创建测试文件的套件。否则,命令将显示套件选择提示。
make:mail
在 app/mails 目录中创建新的邮件类。邮件类以 Notification 关键字为后缀。但是,您可以使用 --intent CLI 标志定义自定义后缀。
- 形式:NA
- 后缀:
Intent - 类名示例:ShipmentNotification
- 文件名示例:shipment_notification.ts
node ace make:mail shipment
# ./app/mails/shipment_notification.ts--intent
为邮件定义自定义意图。
shnode ace make:mail shipment --intent=confirmation # ./app/mails/shipment_confirmation.ts node ace make:mail storage --intent=warning # ./app/mails/storage_warning.ts
make:policy
创建新的 Bouncer 策略类。策略存储在 app/policies 文件夹中,并使用以下命名约定。
- 形式:
singular(单数) - 后缀:
policy - 类名示例:
PostPolicy - 文件名示例:
post_policy.ts
node ace make:policy postinspect:rcfile
查看合并默认值后的 adonisrc.ts 文件内容。您可以使用此命令检查可用的配置选项,并根据应用程序需求覆盖它们。
另请参阅:AdonisRC 文件
node ace inspect:rcfilelist:routes
查看应用程序注册的路由列表。此命令将在 console 环境中启动您的 AdonisJS 应用程序。
node ace list:routes如果您使用我们的官方 VSCode 扩展,您也可以从 VSCode 活动栏查看路由列表。

--json
以 JSON 字符串形式查看路由。输出将是一个对象数组。
--table
在 CLI 表格中查看路由。默认情况下,我们在紧凑的漂亮列表中显示路由。
--middleware
过滤路由列表并包含使用指定中间件的路由。您可以使用
*关键字包含使用一个或多个中间件的路由。--ignore-middleware
过滤路由列表并包含不使用指定中间件的路由。您可以使用
*关键字包含不使用任何中间件的路由。
env:add
env:add 命令允许您向 .env、.env.example 文件添加新的环境变量,并在 start/env.ts 文件中定义验证规则。
您可以直接运行命令,它会提示您输入变量名称、值和验证规则。或者您可以将它们作为参数传递。
# 将提示输入变量名称、值和验证规则
node ace env:add
# 定义变量名称、值和验证规则
node ace env:add MY_VARIABLE value --type=string--type
定义环境变量的类型。值必须是以下之一:
string、boolean、number、enum。--enum-values
当类型为
enum时,定义环境变量的允许值。shnode ace env:add MY_VARIABLE foo --type=enum --enum-values=foo --enum-values=bar