Drizzle Kit export
命令会触发一系列事件:
- 它将读取你的 Drizzle 模式文件并编写你的模式的 JSON 快照
- 根据 JSON 差异,生成 SQL DDL 语句
- 将 SQL DDL 语句输出到控制台
drizzle-kit export
drizzle-kit export
允许你导出 Drizzle 模式的 SQL 表示形式,并在控制台中打印其 SQL DDL 表示形式。
How it works under the hood?
Drizzle Kit export
命令会触发一系列事件:
它旨在涵盖管理 Drizzle 迁移的 代码库优先 方法。你可以导出 Drizzle 模式的 SQL 表示,以便允许 Atlas 等外部工具为你处理所有迁移。
drizzle-kit export
命令要求你提供 dialect
和 schema
路径选项,你可以通过 drizzle.config.ts 配置文件或 CLI 选项进行设置。
// drizzle.config.ts
import { defineConfig } from "drizzle-kit";
export default defineConfig({
dialect: "postgresql",
schema: "./src/schema.ts",
});
npx drizzle-kit export
你可以拥有一个 schema.ts
文件,也可以在整个项目中分布任意数量的模式文件。Drizzle Kit 要求你将这些模式文件的路径指定为 glob via schema
配置选项。
📦 <project root>
├ ...
├ 📂 drizzle
├ 📂 src
│ ├ ...
│ ├ 📜 index.ts
│ └ 📜 schema.ts
├ 📜 drizzle.config.ts
└ 📜 package.json
import { defineConfig } from "drizzle-kit";
export default defineConfig({
schema: "./src/schema.ts",
});
项目中可以有多个配置文件,当同一个项目有多个数据库阶段或多个数据库或不同的数据库时,这非常有用:
npx drizzle-kit 导出 --config=drizzle-dev.config.ts drizzle-kit 导出 --config=drizzle-prod.config.ts
📦 <project root>
├ 📂 drizzle
├ 📂 src
├ 📜 .env
├ 📜 drizzle-dev.config.ts
├ 📜 drizzle-prod.config.ts
├ 📜 package.json
└ 📜 tsconfig.json
drizzle-kit export
包含一系列仅限命令行选项
--sql | 生成 Drizzle Schema 的 SQL 表示 |
默认情况下,Drizzle Kit 输出 SQL 文件,但未来我们希望支持不同的格式。
npx drizzle-kit push --name=init drizzle-kit push --name=seed_users --custom
我们建议通过 drizzle.config.ts 文件配置 drizzle-kit
,但你也可以根据需要通过 CLI 提供所有配置选项,例如在 CI/CD 管道中等。
dialect | required | 数据库方言,postgresql mysql sqlite turso singlestore 之一 |
schema | required | TypeScript 模式文件或包含多个模式文件的文件夹的路径 |
config | 配置文件路径,默认为 drizzle.config.ts |
如何将 Drizzle 模式导出到控制台的示例,其中 Drizzle 模式位于 ./src/schema.ts
中
我们还会将 drizzle 配置文件放在 configs
文件夹中。
让我们创建配置文件:
📦 <project root>
├ 📂 configs
│ └ 📜 drizzle.config.ts
├ 📂 src
│ └ 📜 schema.ts
└ …
import { defineConfig } from "drizzle-kit";
export default defineConfig({
dialect: "postgresql",
schema: "./src/schema.ts",
});
import { pgTable, serial, text } from 'drizzle-orm/pg-core'
export const users = pgTable('users', {
id: serial('id').primaryKey(),
email: text('email').notNull(),
name: text('name')
});
现在运行
npx drizzle-kit export --config=./configs/drizzle.config.ts
它将成功输出 drizzle 模式的 SQL 表示
CREATE TABLE "users" (
"id" serial PRIMARY KEY NOT NULL,
"email" text NOT NULL,
"name" text
);