メインコンテンツへスキップ

Prisma Clientの生成

Prisma Clientは、データベーススキーマに合わせて生成されるデータベースクライアントです。デフォルトでは、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スキーマに追加します

    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スキーマに加えた変更を反映して生成されたPrisma Clientコードを更新するには、スキーマの変更があるたびにprisma generateコマンドを再実行する必要があります。

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"
}

そのスキーマファイルに対して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のコードが変更されます

The .prisma and @prisma folders

.prismaフォルダは、Node.jsパッケージマネージャーでの剪定(pruning)の影響を受けません。

© . All rights reserved.