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

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 Clientコードを更新するには、Prismaスキーマに加えたすべての変更後に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の影響を受けません。