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スキーマに加えた変更を反映して生成されたPrisma Clientコードを更新するには、スキーマの変更があるたびに
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)の影響を受けません。