drizzle-kit generate
This guide assumes familiarity with:
drizzle-kit generate
允许您根据 Drizzle 模式在声明时或后续模式更改时生成 SQL 迁移。
Drizzle Kit generate
命令触发以下事件序列:
- 它将读取您的 Drizzle 模式文件并创建模式的 JSON 快照
- 它将读取您先前的迁移文件夹并将当前 JSON 快照与最新的快照进行比较
- 基于 JSON 差异,它将生成 SQL 迁移
- 保存
migration.sql
和 snapshot.json
在以当前时间戳命名的迁移文件夹中
它旨在覆盖 代码优先 的 Drizzle 迁移管理方法。
您可以使用 drizzle-kit migrate
应用生成的迁移,也可以使用 drizzle-orm 的 migrate()
,
使用外部迁移工具,如 bytebase,或者直接在数据库上执行迁移。
drizzle-kit generate
命令要求您提供 dialect
和 schema
路径选项,
您可以通过 drizzle.config.ts 配置文件或通过 CLI 选项设置它们。
模式文件路径
您可以有一个单独的 schema.ts
文件,或者在项目中拥有任意数量的模式文件。
Drizzle Kit 要求您通过 schema
配置选项以 glob 指定路径。
Example 1
Example 2
Example 3
Example 4
自定义迁移文件名
您可以通过提供 --name
CLI 选项设置自定义迁移文件名。
项目中的多个配置文件
您可以在项目中拥有多个配置文件,这在您有多个数据库阶段、多个数据库或者在同一个项目上有不同数据库时非常有用:
自定义迁移
您可以生成空的迁移文件以编写自己的自定义 SQL 迁移
用于当前不被 Drizzle Kit 支持的 DDL 更改或数据填充。有关自定义迁移的扩展文档 - 点击这里
可用配置的扩展列表
drizzle-kit generate
有一系列仅限 cli 的选项。
| |
---|
custom | 生成自定义迁移的空 SQL 文件 |
name | 生成自定义名称的迁移 |
我们推荐通过 drizzle.config.ts 文件来配置 drizzle-kit
,
但如果有必要,您也可以通过 CLI 提供所有配置选项,例如在 CI/CD 管道等中。
| | |
---|
dialect | required | 数据库方言,取值之一 postgresql mysql sqlite turso |
schema | required | 指向 TypeScript 模式文件或包含多个模式文件的文件夹的路径 |
out | | 迁移输出文件夹,默认为 ./drizzle |
config | | 配置文件路径,默认为 drizzle.config.ts |
breakpoints | | SQL 语句断点,默认值为 true |
扩展示例
如何创建一个名为 0001_seed-users.sql
的自定义 PostgreSQL 迁移文件的示例。
Drizzle 模式位于 ./src/schema.ts
,迁移文件夹名为 ./migrations
,而不是默认的 ./drizzle
。
我们还将在 configs
文件夹中放置 drizzle 配置文件。
让我们创建配置文件:
现在让我们运行:
它将成功生成: