Drizzle Kit 配置文件
This guide assumes familiarity with:
- 开始使用 Drizzle 和
drizzle-kit
- 阅读这里
- Drizzle 模式基础 - 阅读这里
- 数据库连接基础 - 阅读这里
- Drizzle 迁移基础 - 阅读这里
- Drizzle Kit 概述 以及 配置文件
Drizzle Kit 允许您在 TypeScript
或 JavaScript
配置文件中声明配置选项。
drizzle.config.ts
drizzle.config.js
扩展配置文件的示例
多个配置文件
您可以在项目中有多个配置文件,这在您有多个数据库环境、多个数据库或在同一个项目中有不同数据库时非常有用:
迁移文件夹
out
参数让您定义迁移文件的文件夹,这是可选的,默认是 drizzle
。
这非常有用,因为您可以在同一个项目中有许多针对不同数据库的独立架构,
并为它们设置不同的迁移文件夹。
迁移文件夹包含 .sql
迁移文件和 _meta
文件夹,后者由 drizzle-kit
使用。
---
dialect
您使用的数据库的方言
| |
---|
类型 | postgresql mysql sqlite turso |
默认 | — |
命令 | generate migrate push pull check up |
schema
glob
基于路径的 Drizzle 模式文件或包含模式文件的文件夹。
| |
---|
类型 | string string[] |
默认 | — |
命令 | generate push |
Example 1
Example 2
Example 3
Example 4
out
定义您的 SQL 迁移文件、模式的 json 快照以及来自 drizzle-kit pull
命令的 schema.ts
的输出文件夹。
| |
---|
类型 | string string[] |
默认 | drizzle |
命令 | generate migrate push pull check up |
driver
Drizzle Kit 会根据提供的 dialect
自动选择当前项目中可用的数据库驱动,
但某些供应商特定的数据库需要不同的连接参数子集。
driver
选项允许您明确选择这些例外驱动。
| |
---|
类型 | aws-data-api d1-http pglight |
默认 | — |
命令 | migrate push pull |
AWS Data API
PGLite
Cloudflare D1 HTTP
---
dbCredentials
以 url
的形式提供数据库连接凭据,
user:password@host:port/db
参数或特定驱动(aws-data-api
d1-http
pglight
)的连接选项。
| |
---|
类型 | 驱动连接选项的联合 |
默认 | — |
命令 | migrate push pull |
PostgreSQL
MySQL
SQLite
Turso
Cloudflare D1
AWS Data API
PGLite
migrations
运行 drizzle-kit migrate
时,Drizzle 会在您的数据库中记录成功应用迁移的日志,
名为 __drizzle_migrations
的日志表在 public
模式下(仅适用于 PostgreSQL)。
migrations
配置选项让您可以更改迁移日志 table
名称和 schema
。
| |
---|
类型 | { table: string, schema: string } |
默认 | { table: "__drizzle_migrations", schema: "drizzle" } |
命令 | migrate |
introspect
drizzle-kit pull
命令的配置。
casing
负责代码中的列键大小写
| |
---|
类型 | { casing: "preserve" | "camel" } |
默认 | { casing: "camel" } |
命令 | pull |
---
tablesFilter
如果您想在一个数据库中运行多个项目 - 查看 我们的指南。
drizzle-kit push
和 drizzle-kit pull
默认会管理 public
模式下的所有表。
您可以通过 tablesFilters
、schemaFilter
和 extensionFilters
选项配置表、模式和扩展的列表。
tablesFilter
选项让您指定基于 glob
的表名过滤,
例如 ["users", "user_info"]
或者 "user*"
| |
---|
类型 | string string[] |
默认 | — |
命令 | generate push pull |
schemaFilter
如果您想在一个数据库中运行多个项目 - 查看 我们的指南。
drizzle-kit push
和 drizzle-kit pull
默认会管理 public
模式下的所有表。
您可以通过 tablesFilters
、schemaFilter
和 extensionFilters
选项配置表、模式和扩展的列表。
schemaFilter
选项让您指定 Drizzle Kit 要管理的模式列表
| |
---|
类型 | string[] |
默认 | ["public"] |
命令 | generate push pull |
extensionsFilters
某些扩展如 postgis
,在数据库中安装后,会在公共模式中创建其自己的表。
这些表必须被 drizzle-kit push
或 drizzle-kit pull
忽略。
extensionsFilters
选项允许您声明一个安装扩展的列表,以便 Drizzle Kit 忽略其在模式中的表。
| |
---|
类型 | ["postgis"] |
默认 | [] |
命令 | push pull |
---
entities
此配置用于设置数据库中特定 实体
的管理设置。
目前,它仅包括 角色
,但最终所有数据库实体将迁移到这里,例如 表
、模式
、扩展
、函数
、触发器
等。
roles
如果您使用 Drizzle Kit 来管理您的架构,特别是定义的角色,可能会出现一些角色未在 Drizzle 架构中定义的情况。
在这种情况下,您可能希望 Drizzle Kit 跳过那些 roles
,而无需在您的 Drizzle 架构中逐一写出每个角色并用 .existing()
标记。
roles
选项让您可以:
- 启用或禁用与 Drizzle Kit 的角色管理。
- 排除特定角色不被 Drizzle Kit 管理。
- 包含特定角色以供 Drizzle Kit 管理。
- 为像
Neon
和 Supabase
这样的提供者启用模式,这些提供者不管理其特定角色。
- 组合上述所有选项。
| |
---|
type | boolean | { provider: "neon" | "supabase", include: string[], exclude: string[]} |
default | false |
commands | push pull generate |
默认情况下,drizzle-kit
不会为您管理角色,因此您需要在 drizzle.config.ts
中启用该功能。
您有一个角色 admin
,并希望将其排除在可管理角色列表之外
您拥有一个角色 admin
,并希望将其包含在可管理角色的列表中
如果您正在使用 Neon
并希望排除由 Neon
定义的角色,您可以使用提供者选项。
如果您正在使用 Supabase
并希望排除由 Supabase
定义的角色,可以使用提供者选项
important
您可能会遇到 Drizzle 相对于数据库提供者指定的新角色略显过时的情况,
因此您可能需要同时使用 provider
选项和 exclude
附加角色。您可以轻松地使用 Drizzle 来做到这一点:
---
strict
在运行 drizzle-kit push
命令时提示确认执行打印的 SQL 语句。
verbose
在 drizzle-kit push
命令期间打印所有 SQL 语句。
| |
---|
类型 | boolean |
默认 | true |
命令 | generate pull |
breakpoints
Drizzle Kit 将自动在生成的 SQL 迁移文件中嵌入 --> statement-breakpoint
,
这对于不支持在一个事务中进行多个 DDL 更改语句的数据库(MySQL 和 SQLite)是必要的。
breakpoints
选项标志允许您开关此功能。
| |
---|
类型 | boolean |
默认 | true |
命令 | generate pull |