跳到主要內容

Prisma 配置參考

概述

警告

此功能目前處於搶先體驗 (Early Access) 階段,仍可能發生變化。

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` 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
© . This site is unofficial and not affiliated with Prisma Data, Inc.