Prisma Config 参考
概览
此功能目前处于早期访问阶段,仍可能发生变化。
prisma.config.ts
文件使用 TypeScript 配置 Prisma CLI,包括 migrate
和 studio
等子命令。您可以通过两种方式定义配置:
使用 defineConfig
助手
import path from 'node:path';
import { defineConfig } from 'prisma/config';
export default defineConfig({
earlyAccess: true,
schema: path.join('prisma', 'schema.prisma'),
});
或使用 TypeScript 的 satisfies
运算符和 PrismaConfig
类型
import path from 'node:path';
import type { PrismaConfig } from 'prisma'
export default {
earlyAccess: true,
schema: path.join('prisma', 'schema.prisma'),
} satisfies PrismaConfig
配置接口
export declare type PrismaConfig<Env extends EnvVars = never> = {
/**
* Whether features with an unstable API are enabled.
*/
earlyAccess: true;
/**
* The path to the schema file or path to a folder that shall be recursively searched for .prisma files.
*/
schema?: string;
/**
* The configuration for Prisma Studio.
*/
studio?: PrismaStudioConfigShape<Env>;
/**
* The configuration for Prisma Migrate + Introspect
*/
migrate?: PrismaMigrateConfigShape<Env>;
};
选项参考
earlyAccess
- 类型:
boolean
- 必需:是(在早期访问阶段)
- 默认值:无
控制是否启用配置文件。在早期访问阶段必须设置为 true
。
migrate
- 类型:
object
- 必需:否
- 默认值:
{}
配置 Prisma Migrate 如何与底层数据库通信。详细信息请参阅下面的子选项。
migrate.adapter
- 类型:
(env: Env) => Promise<SqlMigrationAwareDriverAdapterFactory>
- 必需:否
- 默认值:无
一个函数,返回一个 Prisma 驱动适配器实例,该实例由 Prisma CLI 用于运行迁移。该函数接收一个包含环境变量的 env
参数,并应返回一个解析为有效的 Prisma 驱动适配器的 Promise
。
使用 Prisma ORM D1 驱动适配器的示例
import path from 'node:path'
import type { PrismaConfig } from 'prisma'
import { PrismaD1HTTP } from '@prisma/adapter-d1'
// import your .env file
import 'dotenv/config'
type Env = {
CLOUDFLARE_D1_TOKEN: string
CLOUDFLARE_ACCOUNT_ID: string
CLOUDFLARE_DATABASE_ID: string
}
export default {
earlyAccess: true,
schema: path.join('prisma', 'schema.prisma'),
migrate: {
async adapter(env) {
return new PrismaD1HTTP({
CLOUDFLARE_D1_TOKEN: env.CLOUDFLARE_D1_TOKEN,
CLOUDFLARE_ACCOUNT_ID: env.CLOUDFLARE_ACCOUNT_ID,
CLOUDFLARE_DATABASE_ID: env.CLOUDFLARE_DATABASE_ID,
})
},
},
} satisfies PrismaConfig<Env>
schema
- 类型:
string
- 必需:否
- 默认值:
./prisma/schema.prisma
和./schema.prisma
配置 Prisma ORM 如何定位和加载您的 schema 文件。可以是文件或文件夹路径。相对路径相对于 prisma.config.ts
文件位置解析。有关 schema 位置选项的更多信息,请参阅此处。
studio
- 类型:
object
- 必需:否
- 默认值:无
配置 Prisma Studio 如何连接到您的数据库。
studio.adapter
- 类型:
(env: Env) => Promise<SqlMigrationAwareDriverAdapterFactory>
- 必需:否
- 默认值:无
一个函数,返回一个 Prisma 驱动适配器实例。该函数接收一个包含环境变量的 env
参数,并应返回一个解析为有效的 Prisma 驱动适配器的 Promise
。
使用 Prisma ORM LibSQL 驱动适配器的示例
import type { PrismaConfig } from 'prisma'
export default {
earlyAccess: true,
studio: {
adapter: async (env: Env) => {
const { PrismaLibSQL } = await import('@prisma/adapter-libsql')
const { createClient } = await import('@libsql/client')
const libsql = createClient({
url: env.DOTENV_PRISMA_STUDIO_LIBSQL_DATABASE_URL,
})
return new PrismaLibSQL(libsql)
},
},
} satisfies PrismaConfig
常见模式
设置您的项目
要开始使用 Prisma Config,请在项目根目录中创建 prisma.config.ts
文件。您可以使用以下任一方法:
使用 defineConfig
import { defineConfig } from 'prisma/config'
export default defineConfig({
earlyAccess: true
})
使用 TypeScript 类型
import type { PrismaConfig } from 'prisma'
export default {
earlyAccess: true
} satisfies PrismaConfig
使用环境变量
使用 prisma.config.ts
时,不会自动加载 .env
文件中的环境变量。您需要:
- 安装
dotenv
包
npm install dotenv
- 在配置文件中导入
dotenv/config
import 'dotenv/config'
import type { PrismaConfig } from 'prisma'
export default {
earlyAccess: true,
// now you can use process.env variables
} satisfies PrismaConfig
使用多文件 schema
如果您想将 Prisma schema 分割到多个文件中,您需要通过 schema
属性指定 Prisma schema 文件夹的路径:
import path from 'node:path';
import type { PrismaConfig } from 'prisma'
export default {
earlyAccess: true,
schema: path.join('prisma', 'schema'),
} satisfies PrismaConfig
在这种情况下,您的 migrations
目录必须位于定义 datasource
块的 .prisma
文件旁边。
例如,假设 schema.prisma
定义了 datasource
,以下是您放置 migrations 文件夹的方式:
# `migrations` and `schema.prisma` are on the same level
.
├── migrations
├── models
│ ├── posts.prisma
│ └── users.prisma
└── schema.prisma
自定义配置位置
运行 Prisma CLI 命令时,您可以指定配置文件的自定义位置:
prisma validate --config ./path/to/myconfig.ts