產生器
Prisma schema 可以有一個或多個產生器,以 generator
區塊表示
generator client {
provider = "prisma-client-js"
output = "./generated/prisma-client-js"
}
產生器決定當您執行 prisma generate
命令時建立哪些資產。主要屬性 provider
定義建立哪個 Prisma Client (特定語言) - 目前僅提供 prisma-client-js
。或者,您可以定義任何符合我們產生器規格的 npm 套件。此外,您可以選擇性地使用 output
定義產生資產的自訂輸出資料夾。
Prisma Client: prisma-client-js
Prisma JavaScript Client 的產生器接受多個其他屬性
previewFeatures
: 要包含的預覽功能binaryTargets
:prisma-client-js
的引擎二進位目標 (例如,如果您要部署到 Ubuntu 18+,則為debian-openssl-1.1.x
;如果您在本地端工作,則為native
)
generator client {
provider = "prisma-client-js"
previewFeatures = ["sample-preview-feature"]
binaryTargets = ["linux-musl"]
}
二進位目標
Prisma Client JS (prisma-client-js
) 使用多個引擎。引擎以 Rust 實作,並以可執行、平台相依的引擎檔案形式由 Prisma Client 使用。根據您執行程式碼的平台,您需要正確的檔案。「二進位目標」用於定義目標平台應存在的檔案。
當部署您的應用程式到生產環境時,正確的檔案尤其重要,生產環境通常與您的本地開發環境不同。
native
二進位目標
native
二進位目標很特別。它不對應到具體的作業系統。相反地,當 native
在 binaryTargets
中指定時,Prisma Client 會偵測目前的作業系統,並自動為其指定正確的二進位目標。
舉例來說,假設您正在執行 macOS,並且您指定了以下產生器
generator client {
provider = "prisma-client-js"
binaryTargets = ["native"]
}
在這種情況下,Prisma Client 會偵測您的作業系統,並根據支援的作業系統列表找到適合它的二進位檔案。如果您使用 macOS Intel x86 (darwin
),則會選取為 darwin
編譯的二進位檔案。如果您使用 macOS ARM64 (darwin-arm64
),則會選取為 darwin-arm64
編譯的二進位檔案。
注意:
native
二進位目標是預設值。如果您希望包含其他二進位目標以部署到不同的環境,您可以明確設定它。
社群產生器
如果您使用 prismaSchemaFolder
預覽功能來管理多個 schema 檔案,則現有的產生器或新的產生器不應受到影響,除非產生器手動讀取 schema。
以下是社群建立的產生器列表。
prisma-dbml-generator
:將 Prisma schema 轉換為 資料庫標記語言 (DBML),以便輕鬆進行視覺化表示prisma-docs-generator
:為 Prisma Client 產生個別的 API 參考prisma-json-schema-generator
:將 Prisma schema 轉換為 JSON schemaprisma-json-types-generator
:為所有資料庫新增對強型別Json
欄位的支援。它適用於prisma-client-js
輸出,並變更 json 欄位以符合您提供的類型。協助程式碼產生器、IntelliSense 等。所有這些都不會影響任何執行階段程式碼。typegraphql-prisma
:為 Prisma 模型產生 TypeGraphQL CRUD 解析器typegraphql-prisma-nestjs
:typegraphql-prisma
的分支,也為 Prisma 模型產生 CRUD 解析器,但適用於 NestJSprisma-typegraphql-types-gen
:從您的 prisma 類型定義產生 TypeGraphQL 類別類型和列舉,產生的輸出可以編輯,而不會被下一個產生覆蓋,並且能夠在您弄亂類型與您的編輯時更正您。nexus-prisma
:允許透過 GraphQL Nexus 將 Prisma 模型投影到 GraphQLprisma-nestjs-graphql
:從 Prisma Schema 產生物件類型、輸入、args 等,以用於@nestjs/graphql
模組prisma-appsync
:為 AWS AppSync 產生功能齊全的 GraphQL APIprisma-kysely
:為 TypeScript SQL 查詢建構器 Kysely 產生類型定義。這可用於從邊緣執行階段對您的資料庫執行查詢,或編寫在 Prisma 中無法實現的更複雜的 SQL 查詢,而不會降低類型安全性。prisma-generator-nestjs-dto
:產生 DTO 和 Entity 類別,其中包含關係connect
和create
選項,以用於 NestJS Resources 和 @nestjs/swaggerprisma-erd-generator
:產生實體關係圖prisma-generator-plantuml-erd
:產生器,用於為 PlantUML 產生 ER 圖。也可以透過啟用選項來產生 Markdown 和 Asciidoc 文件。prisma-class-generator
:從您的 Prisma Schema 產生可用作 DTO、Swagger Response、TypeGraphQL 等的類別。zod-prisma
:從您的 Prisma 模型建立 Zod schema。prisma-pothos-types
:讓定義基於 Prisma 的物件類型變得更容易,並有助於解決關係的 n+1 查詢。它還整合了 Relay 外掛程式,使定義節點和連線變得容易而有效率。prisma-generator-pothos-codegen
:自動產生輸入類型 (用作 args) 並自動產生解耦的類型安全基礎檔案,使從 Prisma schema 為 Pothos 建立可自訂的物件、查詢和變異變得容易。選擇性地從基礎檔案一次產生所有 crud。prisma-joi-generator
:從您的 Prisma schema 產生完整的 Joi schema。prisma-yup-generator
:從您的 Prisma schema 產生完整的 Yup schema。prisma-class-validator-generator
:從您的 Prisma schema 發出 TypeScript 模型,並準備好類別驗證器驗證。prisma-zod-generator
:從您的 Prisma schema 發出 Zod schema。prisma-trpc-generator
:發出完全實作的 tRPC 路由器。prisma-json-server-generator
:發出可以使用 json-server 執行的 JSON 檔案。prisma-trpc-shield-generator
:從您的 Prisma schema 發出 tRPC shield。prisma-custom-models-generator
:根據 Prisma 建議,從您的 Prisma schema 發出自訂模型。nestjs-prisma-graphql-crud-gen
:使用 NestJS 和 Prisma 從 GraphQL schema 產生 CRUD 解析器。prisma-generator-dart
:產生具有 to- 和 fromJson 方法的 Dart/Flutter 類別檔案。prisma-generator-graphql-typedef
:產生 graphql schema。prisma-markdown
:產生由 ERD 圖表及其描述組成的 markdown 文件。透過@namespace
註解標籤支援 ERD 圖表的分頁。prisma-models-graph
:為 schema 產生雙向模型圖,schema 中未定義嚴格的關係,透過自訂 schema 註解運作。prisma-generator-fake-data
:為您的 Prisma 模型產生逼真的假資料,可用於單元/整合測試、演示等。prisma-generator-drizzle
:用於輕鬆產生 Drizzle schema 的 Prisma 產生器。prisma-generator-express
:產生 Express CRUD 和路由器產生器函式。prismabox
:從您的 Prisma 模型產生多功能的 typebox schema。prisma-generator-typescript-interfaces
:從您的 Prisma schema 產生零依賴性的 TypeScript 介面。