用途
Prisma Config 是 Prisma v7 引入的集中配置文件,文件名为 prisma.config.ts,作为 Prisma CLI 的核心配置入口。它把原本写在 schema.prisma 中的数据源连接信息与迁移相关设置,统一迁移到 TypeScript 配置文件中管理。
位置
将 prisma.config.ts 放在项目根目录,即与 package.json 同级。
基本配置
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DATABASE_URL'),
},
})
配置选项
schema
指定 Prisma schema 文件的路径:
schema: 'prisma/schema.prisma'
datasource.url
数据库连接 URL:
datasource: {
url: env('DATABASE_URL'),
}
datasource.directUrl
直连 URL(绕过连接池):
datasource: {
url: env('DATABASE_URL'),
directUrl: env('DIRECT_DATABASE_URL'),
}
datasource.shadowDatabaseUrl
用于迁移的 shadow 数据库:
datasource: {
url: env('DATABASE_URL'),
shadowDatabaseUrl: env('SHADOW_DATABASE_URL'),
}
migrations.path
迁移文件所在目录:
migrations: {
path: 'prisma/migrations',
}
migrations.seed
prisma db seed 使用的 seed 命令:
migrations: {
path: 'prisma/migrations',
seed: 'tsx prisma/seed.ts',
}
完整示例
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
// Schema location
schema: 'prisma/schema.prisma',
// Migration configuration
migrations: {
path: 'prisma/migrations',
seed: 'tsx prisma/seed.ts',
},
// Database connection
datasource: {
url: env('DATABASE_URL'),
directUrl: env('DIRECT_DATABASE_URL'),
shadowDatabaseUrl: env('SHADOW_DATABASE_URL'),
},
})
环境变量
env() 辅助函数
使用 env() 引用环境变量:
import { env } from 'prisma/config'
datasource: {
url: env('DATABASE_URL'),
}
它提供类型安全,但不会自动加载 .env 文件。
加载 .env 文件
安装并导入 dotenv:
npm install dotenv
import 'dotenv/config' // Must be first import
import { defineConfig, env } from 'prisma/config'
从 v6 迁移
迁移前(v6)——schema.prisma:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
directUrl = env("DIRECT_URL")
}
迁移后(v7)——prisma.config.ts:
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
datasource: {
url: env('DATABASE_URL'),
directUrl: env('DIRECT_URL'),
},
})
并更新 schema.prisma:
datasource db {
provider = "postgresql"
// URLs now in prisma.config.ts
}
自定义配置路径
在 CLI 命令中使用 --config 标志:
prisma migrate dev --config ./config/prisma.config.ts
Monorepo 配置
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'
import path from 'path'
export default defineConfig({
schema: path.join(__dirname, 'packages/database/prisma/schema.prisma'),
migrations: {
path: path.join(__dirname, 'packages/database/prisma/migrations'),
},
datasource: {
url: env('DATABASE_URL'),
},
})
适用场景
适用于使用 Prisma v7 并需要集中管理 schema 路径、数据库连接 URL、迁移目录与 seed 命令的项目,包括需要自定义配置路径或 monorepo 结构的场景。
限制
env() 提供类型安全但不会自动加载 .env 文件,需要自行安装并导入 dotenv。资料未提供其他限制、收费或平台信息。