Prisma Clientの生成
Prisma Clientは、データベーススキーマに合わせて生成されるデータベースクライアントです。デフォルトでは、Prisma Clientはnode_modules/.prisma/client
フォルダに生成されますが、出力場所を指定することを強くお勧めします。
Prisma ORM 7では、Prisma Clientはデフォルトでnode_modules
に生成されなくなり、出力パスの定義が必要になります。出力パスを定義する方法の詳細については、以下をご覧ください。
Prisma Clientを生成およびインスタンス化するには
-
Prisma CLIがマシンにインストールされていることを確認してください。
npm install prisma --save-dev
-
次の
generator
定義をPrismaスキーマに追加しますgenerator client {
provider = "prisma-client-js"
output = "app/generated/prisma/client"
}注意アプリケーションに合わせて出力場所を自由にカスタマイズしてください。一般的なディレクトリは、
app
、src
、またはプロジェクトのルートです。 -
@prisma/client
npmパッケージをインストールしますnpm install @prisma/client
-
次のコマンドでPrisma Clientを生成します
prisma generate
-
これで、コード内で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 Clientコードを更新するには、Prismaスキーマに加えたすべての変更後に
prisma generate
コマンドを再実行する必要があります。
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"
}
そのスキーマファイルに対してprisma generate
を実行すると、Prisma Clientパッケージは次の場所に配置されます。
./src/generated/client
カスタムの場所からPrismaClient
をインポートするには(たとえば、./src/script.ts
という名前のファイルから)。
import { PrismaClient } from './generated/client'
ECMAScriptモジュール(ESM)との互換性を向上させ、さまざまなNode.jsランタイム間でPrisma ORMの一貫した動作を保証するために、prisma-client
ジェネレーター(プレビュー)を使用することもできます。このジェネレーターは、モジュール解決とランタイムのバリエーションに関する一般的な課題に対処するために特別に設計されており、よりスムーズな統合エクスペリエンスと、バンドラーとの摩擦を軽減します。
@prisma/client
npmパッケージ
@prisma/client
npmパッケージは、次の2つの主要な部分で構成されています。
@prisma/client
モジュール自体。これはパッケージを再インストールした場合にのみ変更されます。.prisma/client
フォルダ。これは、スキーマから生成された一意のPrisma Clientのデフォルトの場所です。
@prisma/client/index.d.ts
は.prisma/client
をエクスポートします
export * from '.prisma/client'
これは、独自の.ts
ファイルで@prisma/client
をインポートすることを意味します。
import { PrismaClient } from '@prisma/client'
Prisma ClientはPrismaスキーマから生成され、プロジェクトに固有です。スキーマを変更するたびに(たとえば、スキーマ移行を実行するなど)、prisma generate
を実行すると、Prisma Clientのコードが変更されます。
.prisma
フォルダは、Node.jsパッケージマネージャーでのpruningの影響を受けません。