跳至主要內容

生成 Prisma Client

Prisma Client 是一個根據你的資料庫 schema 定製的生成式資料庫客戶端。預設情況下,Prisma Client 會生成到 node_modules/.prisma/client 資料夾中,但我們強烈建議你指定一個輸出位置

警告

在 Prisma ORM 7 中,Prisma Client 預設將不再生成到 node_modules 中,並且將需要定義一個輸出路徑。有關如何定義輸出路徑的更多資訊,請參閱下文

生成和例項化 Prisma Client

  1. 確保你已在你的機器上安裝 Prisma CLI

    npm install prisma --save-dev
  2. 將以下 generator 定義新增到你的 Prisma schema 中

    generator client {
    provider = "prisma-client-js"
    output = "app/generated/prisma/client"
    }
    注意

    請隨意自定義輸出位置以匹配你的應用程式。常見的目錄有 appsrc,甚至是你的專案根目錄。

  3. 安裝 @prisma/client npm 包

    npm install @prisma/client
  4. 使用以下命令生成 Prisma Client

    prisma generate
  5. 你現在可以在程式碼中例項化 Prisma Client

    import { PrismaClient } from 'app/generated/prisma/client'
    const prisma = new PrismaClient()
    // use `prisma` in your application to read and write data in your DB

重要:在每次更改 Prisma schema 後,你需要重新執行 prisma generate 命令來更新生成的 Prisma Client 程式碼。

以下是 Prisma Client 典型生成工作流程的圖示

Graphical illustration of the typical workflow for generation of Prisma Client

Prisma Client 的位置

警告

我們強烈建議你定義一個自定義的 output 路徑。在 Prisma ORM 版本 6.6.0 中,不定義 output 路徑將導致警告。在 Prisma ORM 7 中,此欄位將是必需的。

使用自定義 output 路徑

你還可以在 generator 配置中指定一個自定義的 output 路徑,例如(假設你的 schema.prisma 檔案位於預設的 prisma 子資料夾中)

generator client {
provider = "prisma-client-js"
output = "../src/generated/client"
}

在該 schema 檔案上執行 prisma generate 後,Prisma Client 包將位於

./src/generated/client

從自定義位置匯入 PrismaClient(例如,從名為 ./src/script.ts 的檔案)

import { PrismaClient } from './generated/client'
注意

為了更好地相容 ECMAScript modules (ESM) 並確保 Prisma ORM 在不同 Node.js 執行時中的一致行為,你還可以使用prisma-client 生成器(預覽版)。此生成器專門設計用於處理模組解析和執行時變體方面的常見挑戰,提供更流暢的整合體驗並減少與打包工具的摩擦。

@prisma/client npm 包

@prisma/client npm 包由兩個主要部分組成

  • @prisma/client 模組本身,僅在你重新安裝包時發生變化
  • .prisma/client 資料夾,這是從你的 schema 生成的唯一 Prisma Client 的預設位置

@prisma/client/index.d.ts 匯出 .prisma/client

export * from '.prisma/client'

這意味著你仍然在自己的 .ts 檔案中匯入 @prisma/client

import { PrismaClient } from '@prisma/client'

Prisma Client 是從你的 Prisma schema 生成的,對你的專案來說是獨一無二的。每次你更改 schema(例如,透過執行schema 遷移)並執行 prisma generate 時,Prisma Client 的程式碼都會發生變化

The .prisma and @prisma folders

.prisma 資料夾不受 Node.js 包管理器中修剪的影響。

© . This site is unofficial and not affiliated with Prisma Data, Inc.