命令

命令

本指南是 Lucid 附带的每个 Ace 命令的参考。命令分为四个家族:make:* 用于生成脚手架文件,migration:* 用于应用和回滚 schema 变更,db:* 用于填充和清除数据,schema:* 用于操作生成的 database/schema.ts 文件和 schema 导出。

每个命令都接受下面列出的标志,以及 AdonisJS 的标准命令标志(如 --help)。

make:migration

database/migrations 中创建一个带有时间戳文件名的新迁移文件。

terminal
node ace make:migration posts --create=posts

name(参数)

迁移文件的名称。Lucid 会自动为文件添加时间戳前缀。

--connection, -c <name>

选择迁移所属的数据库连接。文件会创建在该连接配置的第一个迁移路径中。

--folder <path>

当连接配置了多个迁移路径时,选择迁移目录。

--create <table>

生成一个创建指定表的迁移。这是默认操作。

--alter <table>

生成一个修改指定表的迁移,而非创建。

--contents-from <path>

使用给定文件的内容作为生成的迁移源,绕过默认模板。

--force, -f

如果文件已存在则覆盖。

make:model

app/models 中创建一个新的 Lucid 模型文件。生成的类默认继承对应表的 schema 类。

terminal
node ace make:model Post

name(参数)

模型类的名称。Lucid 会自动将其转换为 snake_case 作为文件名。

--migration

生成一个匹配的迁移文件。

--controller

为模型生成一个匹配的资源控制器。

--transformer

为模型生成一个匹配的 transformer 文件。

--factory

为模型生成一个匹配的工厂文件。

--contents-from <path>

使用给定文件的内容作为生成的模型源。

--force

如果文件已存在则覆盖。

make:factory

database/factories 中创建一个新的模型工厂。

terminal
node ace make:factory Post

model(参数)

工厂所生产的模型名称。Lucid 会将模型导入工厂文件。

--contents-from <path>

使用给定文件的内容作为生成的工厂源。

--force, -f

如果文件已存在则覆盖。

make:seeder

database/seeders 中创建一个新的种子文件。

terminal
node ace make:seeder User

name(参数)

seeder 类的名称。文件名由此名称派生。

--contents-from <path>

使用给定文件的内容作为生成的 seeder 源。

--force, -f

如果文件已存在则覆盖。

migration:run

按顺序应用每个待处理的迁移,将每个迁移记录在 adonis_schema 表中,完成后重新生成 database/schema.ts

terminal
node ace migration:run
❯ migrated database/migrations/1720000000000_create_posts_table
❯ migrated database/migrations/1720000000001_create_comments_table
Migrated in 42 ms

--connection, -c <name>

对指定连接运行迁移,而非默认连接。

--force

显式允许命令在生产环境中运行。迁移命令默认拒绝在生产环境中运行,除非使用此标志。

--dry-run

打印将要运行的 SQL 而不实际执行。在代码审查中审核生成的 SQL 时很有用。

--compact-output

输出单行摘要,而非逐文件进度行。

--disable-locks

跳过序列化并发迁移运行的应用锁。仅在你确定没有其他进程正在迁移同一数据库时才禁用。

--schema-path <path>

在运行待处理迁移之前加载 schema 导出文件。用于从 schema 导出引导全新数据库,而无需重放整个迁移历史。参见 schema 导出指南

--no-schema-generate

迁移应用后跳过重新生成 database/schema.ts。默认是重新生成。

migration:rollback

回滚最近一批迁移。使用 --step 可回滚指定数量的文件,使用 --batch 可回滚到指定批次号。

terminal
node ace migration:rollback
node ace migration:rollback --step=2
node ace migration:rollback --batch=0

--connection, -c <name>

在指定连接上回滚迁移。

--force

显式允许命令在生产环境中运行。

--dry-run

打印将要运行的 SQL 而不实际执行。

--batch <number>

回滚到指定批次号。传入 0 可回滚所有迁移。

--step <number>

回滚指定数量的迁移文件,不考虑批次。

--compact-output

输出单行摘要,而非逐文件进度行。

--disable-locks

跳过序列化并发迁移运行的应用锁。

--no-schema-generate

回滚后跳过重新生成 database/schema.ts。默认是重新生成。

migration:refresh

回滚所有迁移,然后从头重新运行所有迁移。如果提供 --seed,则在刷新后可选运行种子。

terminal
node ace migration:refresh
node ace migration:refresh --seed

--connection, -c <name>

在指定连接上刷新迁移。

--force

显式允许命令在生产环境中运行。

--dry-run

打印将要运行的 SQL 而不实际执行。

--seed

刷新完成后运行数据库种子。

--compact-output

输出单行摘要,而非逐文件进度行。

--disable-locks

跳过序列化并发迁移运行的应用锁。

--no-schema-generate

刷新后跳过重新生成 database/schema.ts。默认是重新生成。

migration:reset

回滚所有迁移而不重新运行它们。使数据库的迁移历史为空。

terminal
node ace migration:reset

--connection, -c <name>

在指定连接上重置迁移。

--force

显式允许命令在生产环境中运行。

--dry-run

打印将要运行的 SQL 而不实际执行。

--compact-output

输出单行摘要,而非逐文件进度行。

--disable-locks

跳过序列化并发迁移运行的应用锁。

--no-schema-generate

重置后跳过重新生成 database/schema.ts。默认是重新生成。

migration:fresh

删除数据库中的所有表(以及视图、类型和域,当使用相应标志时),然后从头重新运行所有迁移。功能上类似于 migration:refresh,但跳过回滚路径,直接删除所有内容。

terminal
node ace migration:fresh
node ace migration:fresh --seed

--connection, -c <name>

在指定连接上运行。

--force

显式允许命令在生产环境中运行。

--seed

迁移完成后运行数据库种子。

--drop-views

在运行迁移之前删除所有视图。

--drop-types

在运行迁移之前删除所有自定义 PostgreSQL 类型。仅限 PostgreSQL。

--drop-domains

在运行迁移之前删除所有 PostgreSQL 域。仅限 PostgreSQL。

--disable-locks

跳过序列化并发迁移运行的应用锁。

--schema-path <path>

在删除并重建数据库之前加载 schema 导出文件。参见 schema 导出指南

migration:status

列出每个迁移文件及其状态(待处理、已完成或出错),按批次分组。

terminal
node ace migration:status
┌───────────────────────────────────────────────┬───────────┬───────┬─────────┐
│ Name │ Status │ Batch │ Message │
├───────────────────────────────────────────────┼───────────┼───────┼─────────┤
│ 1720000000000_create_posts_table │ completed │ 1 │ │
│ 1720000000001_create_comments_table │ completed │ 1 │ │
│ 1720000000002_add_published_at_to_posts_table │ pending │ │ │
└───────────────────────────────────────────────┴───────────┴───────┴─────────┘

--connection, -c <name>

列出指定连接的状态。

db:seed

运行 database/seeders 中的每个 seeder。使用 --files 运行特定子集,或使用 --interactive 交互式选择 seeder。

terminal
node ace db:seed
node ace db:seed --interactive
node ace db:seed --files=./database/seeders/user_seeder.ts

--connection, -c <name>

对指定连接运行 seeder。

--interactive, -i

交互式选择要运行的 seeder,而非运行所有文件。

--files <paths...>

仅运行列出的 seeder 文件。可多次传入该标志或使用逗号分隔的列表。

--compact-output

输出单行摘要,而非每个 seeder 的进度行。

db:wipe

删除数据库中的所有表,以及可选的视图、自定义类型和域。当你想重建时,可结合 migration:run 使用或直接使用 migration:fresh

terminal
node ace db:wipe

--connection, -c <name>

指定目标连接。

--drop-views

删除所有视图。

--drop-types

删除所有自定义 PostgreSQL 类型。仅限 PostgreSQL。

--drop-domains

删除所有 PostgreSQL 域。仅限 PostgreSQL。

--force

显式允许命令在生产环境中运行。

连接配置中 wipe.ignoreTables 列出的表会被保留。参见配置指南

db:truncate

清空数据库中的所有表,保留 schema。当你需要在测试或开发运行之间重置数据而不删除表时很有用。

terminal
node ace db:truncate

--connection, -c <name>

指定目标连接。

--force

显式允许命令在生产环境中运行。

schema:dump

将当前数据库 schema 写入单个 SQL 文件,同时附带一个 JSON 清单文件。该导出文件由 migration:run --schema-pathmigration:fresh --schema-path 使用,用于引导数据库而无需重放完整的迁移历史,这对于迁移历史较长的应用非常有用。参见 schema 导出指南了解端到端工作流。

terminal
node ace schema:dump
node ace schema:dump --path=./database/schema.sql

--connection, -c <name>

导出指定连接的 schema。

--path <path>

将导出文件写入自定义位置。默认为 database/schema/{connection}-schema.sql

--prune

导出后从配置的迁移路径中删除每个迁移文件。在将长迁移历史压缩为单个 schema 导出时使用。参见压缩长迁移历史

schema:generate

通过内省数据库重新生成 database/schema.ts。迁移命令在完成时会自动运行此命令,因此此命令主要用于首次采用遗留数据库或手动 schema 更改之后。

terminal
node ace schema:generate
❯ Generated database/schema.ts

--connection, -c <name>

从指定连接生成 schema 类。

--compact-output

输出单行摘要,而非详细进度。