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

スキーマの場所

Prisma スキーマのデフォルト名は、`prisma` フォルダー内の単一ファイル `schema.prisma` です。スキーマがこのように命名されている場合、Prisma CLI は自動的にそれを検出します。

Prisma スキーマの場所

Prisma CLI は、以下の場所で、以下の順序で Prisma スキーマを探します

  1. `introspect`、`generate`、`migrate`、`studio` の際に利用可能な、`--schema` フラグで指定された場所

    prisma generate --schema=./alternative/schema.prisma
  2. `package.json` ファイルで指定された場所 (バージョン 2.7.0 以降)

    "prisma": {
    "schema": "db/schema.prisma"
    }
  3. デフォルトの場所

    • ./prisma/schema.prisma
    • ./schema.prisma

Prisma CLI は、使用されるスキーマのパスを出力します。以下の例は、`prisma db pull` のターミナル出力を示しています

Environment variables loaded from .env
Prisma Schema loaded from prisma/schema.prisma

Introspecting based on datasource defined in prisma/schema.prisma …

✔ Introspected 4 models and wrote them into prisma/schema.prisma in 239ms

Run prisma generate to generate Prisma Client.

複数ファイル Prisma スキーマ

Prisma スキーマを複数のファイルに分割したい場合、以下のようなセットアップが可能です

.
├── migrations
├── models
│ ├── posts.prisma
│ ├── users.prisma
│ └── ... other `.prisma` files
└── schema.prisma

複数ファイル Prisma スキーマは、v6.7.0 以降、一般提供されています。それ以前は、prismaSchemaFolder プレビュー機能フラグを通じて使用できました。

使用方法

複数ファイル Prisma スキーマを使用する場合、datasource ブロックを含む .prisma ファイルが格納されているディレクトリの場所を常に明示的に指定する必要があります。

これを行うには、3つの方法があります

  • Prisma CLI コマンドに --schema オプションを渡す (例: prisma migrate dev --schema ./prisma)
  • `package.json` の prisma.schema フィールドを設定する
    // package.json
    {
    "prisma": {
    "schema": "./prisma"
    }
    }
  • prisma.config.tsschema プロパティを設定する
    import path from 'node:path'
    import type { PrismaConfig } from 'prisma'

    export default {
    earlyAccess: true,
    schema: path.join('prisma'),
    } satisfies PrismaConfig<Env>

上記の例はすべて、datasource ブロックが prisma ディレクトリ内の .prisma ファイルで定義されていることを前提としています。

また、migrations ディレクトリは、datasource ブロックを定義する .prisma ファイルの隣に配置する必要があります。

たとえば、schema.prismadatasource を定義していると仮定した場合、移行フォルダーを配置する必要があるのは次のとおりです

# `migrations` and `schema.prisma` must be on the same level
.
├── migrations
├── models
│ ├── posts.prisma
│ └── users.prisma
└── schema.prisma

複数ファイル Prisma スキーマのヒント

この機能でうまく機能し、最大限に活用するのに役立ついくつかのパターンが見つかりました

  • ファイルをドメインごとに整理する: 関連するモデルを同じファイルにまとめます。たとえば、ユーザー関連のすべてのモデルは user.prisma に、投稿関連のモデルは post.prisma に保持します。
  • 明確な命名規則を使用する: スキーマファイルは、明確かつ簡潔に命名する必要があります。myModels.prismaCommentFeaturesSchema.prisma ではなく、user.prismapost.prisma のような名前を使用します。
  • 明確な「メイン」スキーマファイルを持つ: いくつでもスキーマファイルを持つことができますが、datasourcegenerator ブロックを定義する場所は依然として必要です。これらのブロックを簡単に見つけられるように、明確に「メイン」ファイルとなる単一のスキーマファイルを持つことをお勧めします。main.prismaschema.prismabase.prisma など、うまく機能する例をいくつか見てきました。

dub.co による dub のフォーク は、複数ファイル Prisma スキーマを使用するように適合された実世界のプロジェクトの素晴らしい例です。

© . All rights reserved.