drizzle-kit export

本指南假定您熟悉

`drizzle-kit export` 允许您导出 Drizzle schema 的 SQL 表示形式,并将其 SQL DDL 表示形式打印到控制台。

底层原理是什么?

Drizzle Kit 的 `export` 命令会触发一系列事件:

  1. 它会读取您的 Drizzle schema 文件并生成一个 schema 的 JSON 快照
  2. 根据 JSON 差异,它将生成 SQL DDL 语句
  3. 将 SQL DDL 语句输出到控制台

它旨在支持代码优先的 Drizzle 迁移管理方法。您可以导出 Drizzle schema 的 SQL 表示形式,从而允许像 Atlas 这样的外部工具为您处理所有迁移。

`drizzle-kit export` 命令要求您提供 `dialect` 和 `schema` 路径选项,您可以通过 drizzle.config.ts 配置文件或 CLI 选项设置它们。

使用配置文件
作为 CLI 选项
// drizzle.config.ts
import { defineConfig } from "drizzle-kit";

export default defineConfig({
  dialect: "postgresql",
  schema: "./src/schema.ts",
});
npx drizzle-kit export

模式文件路径

您可以拥有一个 `schema.ts` 文件,也可以在项目中分散多个 schema 文件。Drizzle Kit 要求您通过 `schema` 配置选项将它们的路径指定为 glob

示例 1
示例 2
示例 3
示例 4
📦 <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",
});

单个项目中的多个配置文件

您可以在项目中拥有多个配置文件,这在您有多个数据库阶段、多个数据库或同一项目中有不同的数据库时非常有用。

npm
yarn
pnpm
bun
npx drizzle-kit export --config=drizzle-dev.config.ts
npx drizzle-kit export --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` 有一些仅限 CLI 的选项:

--sql生成 Drizzle Schema 的 SQL 表示形式

默认情况下,Drizzle Kit 输出 SQL 文件,但将来我们希望支持不同的格式。

npm
yarn
pnpm
bun
npx drizzle-kit push --name=init
npx drizzle-kit push --name=seed_users --custom



我们建议通过 drizzle.config.ts 文件配置 drizzle-kit,但在必要时,您也可以通过 CLI 提供所有配置选项,例如在 CI/CD 流水线中。

dialect必填数据库方言,可以是 postgresql mysql sqlite turso singlestore 之一
schema必填TypeScript 模式文件或包含多个模式文件的文件夹路径
config配置文件路径,默认为 `drizzle.config.ts`

示例

将 Drizzle schema 导出到控制台的示例,Drizzle schema 位于 `./src/schema.ts`

我们还将 Drizzle 配置文件放在 `configs` 文件夹中。

让我们创建配置文件

📦 <project root>
 ├ 📂 configs
 │ └ 📜 drizzle.config.ts
 ├ 📂 src
 │ └ 📜 schema.ts
 └ …
drizzle.config.ts
import { defineConfig } from "drizzle-kit";

export default defineConfig({
  dialect: "postgresql",
  schema: "./src/schema.ts",
});
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 schema 的 SQL 表示形式。

CREATE TABLE "users" (
        "id" serial PRIMARY KEY NOT NULL,
        "email" text NOT NULL,
        "name" text
);