跳到主要内容

Prisma Config 参考

概览

警告

此功能目前处于早期访问阶段,仍可能发生变化。

prisma.config.ts 文件使用 TypeScript 配置 Prisma CLI,包括 migratestudio 等子命令。您可以通过两种方式定义配置:

使用 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 文件中的环境变量。您需要:

  1. 安装 dotenv
npm install dotenv
  1. 在配置文件中导入 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