命令
本指南是 Lucid 附带的每个 Ace 命令的参考。命令分为四个家族:make:* 用于生成脚手架文件,migration:* 用于应用和回滚 schema 变更,db:* 用于填充和清除数据,schema:* 用于操作生成的 database/schema.ts 文件和 schema 导出。
每个命令都接受下面列出的标志,以及 AdonisJS 的标准命令标志(如 --help)。
make:migration
在 database/migrations 中创建一个带有时间戳文件名的新迁移文件。
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 类。
node ace make:model Post
-
name(参数)
-
模型类的名称。Lucid 会自动将其转换为 snake_case 作为文件名。
-
--migration
-
生成一个匹配的迁移文件。
-
--controller
-
为模型生成一个匹配的资源控制器。
-
--transformer
-
为模型生成一个匹配的 transformer 文件。
-
--factory
-
为模型生成一个匹配的工厂文件。
-
--contents-from <path>
-
使用给定文件的内容作为生成的模型源。
-
--force
-
如果文件已存在则覆盖。
make:factory
在 database/factories 中创建一个新的模型工厂。
node ace make:factory Post
-
model(参数)
-
工厂所生产的模型名称。Lucid 会将模型导入工厂文件。
-
--contents-from <path>
-
使用给定文件的内容作为生成的工厂源。
-
--force, -f
-
如果文件已存在则覆盖。
make:seeder
在 database/seeders 中创建一个新的种子文件。
node ace make:seeder User
-
name(参数)
-
seeder 类的名称。文件名由此名称派生。
-
--contents-from <path>
-
使用给定文件的内容作为生成的 seeder 源。
-
--force, -f
-
如果文件已存在则覆盖。
migration:run
按顺序应用每个待处理的迁移,将每个迁移记录在 adonis_schema 表中,完成后重新生成 database/schema.ts。
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 可回滚到指定批次号。
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,则在刷新后可选运行种子。
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
回滚所有迁移而不重新运行它们。使数据库的迁移历史为空。
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,但跳过回滚路径,直接删除所有内容。
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
列出每个迁移文件及其状态(待处理、已完成或出错),按批次分组。
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。
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。
node ace db:wipe
-
--connection, -c <name>
-
指定目标连接。
-
--drop-views
-
删除所有视图。
-
--drop-types
-
删除所有自定义 PostgreSQL 类型。仅限 PostgreSQL。
-
--drop-domains
-
删除所有 PostgreSQL 域。仅限 PostgreSQL。
-
--force
-
显式允许命令在生产环境中运行。
连接配置中 wipe.ignoreTables 列出的表会被保留。参见配置指南。
db:truncate
清空数据库中的所有表,保留 schema。当你需要在测试或开发运行之间重置数据而不删除表时很有用。
node ace db:truncate
-
--connection, -c <name>
-
指定目标连接。
-
--force
-
显式允许命令在生产环境中运行。
schema:dump
将当前数据库 schema 写入单个 SQL 文件,同时附带一个 JSON 清单文件。该导出文件由 migration:run --schema-path 和 migration:fresh --schema-path 使用,用于引导数据库而无需重放完整的迁移历史,这对于迁移历史较长的应用非常有用。参见 schema 导出指南了解端到端工作流。
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 更改之后。
node ace schema:generate
❯ Generated database/schema.ts
-
--connection, -c <name>
-
从指定连接生成 schema 类。
-
--compact-output
-
输出单行摘要,而非详细进度。