Prisma 配置參考
概述
此功能目前處於搶先體驗 (Early Access) 階段,仍可能發生變化。
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` 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