スキーマの場所
Prisma スキーマのデフォルト名は、`prisma` フォルダー内の単一ファイル `schema.prisma` です。スキーマがこのように命名されている場合、Prisma CLI は自動的にそれを検出します。
Prisma スキーマの場所
Prisma CLI は、以下の場所で、以下の順序で Prisma スキーマを探します
-
`introspect`、`generate`、`migrate`、`studio` の際に利用可能な、`--schema` フラグで指定された場所
prisma generate --schema=./alternative/schema.prisma
-
`package.json` ファイルで指定された場所 (バージョン 2.7.0 以降)
"prisma": {
"schema": "db/schema.prisma"
} -
デフォルトの場所
./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.ts
のschema
プロパティを設定する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.prisma
が datasource
を定義していると仮定した場合、移行フォルダーを配置する必要があるのは次のとおりです
# `migrations` and `schema.prisma` must be on the same level
.
├── migrations
├── models
│ ├── posts.prisma
│ └── users.prisma
└── schema.prisma
複数ファイル Prisma スキーマのヒント
この機能でうまく機能し、最大限に活用するのに役立ついくつかのパターンが見つかりました
- ファイルをドメインごとに整理する: 関連するモデルを同じファイルにまとめます。たとえば、ユーザー関連のすべてのモデルは
user.prisma
に、投稿関連のモデルはpost.prisma
に保持します。 - 明確な命名規則を使用する: スキーマファイルは、明確かつ簡潔に命名する必要があります。
myModels.prisma
やCommentFeaturesSchema.prisma
ではなく、user.prisma
やpost.prisma
のような名前を使用します。 - 明確な「メイン」スキーマファイルを持つ: いくつでもスキーマファイルを持つことができますが、
datasource
とgenerator
ブロックを定義する場所は依然として必要です。これらのブロックを簡単に見つけられるように、明確に「メイン」ファイルとなる単一のスキーマファイルを持つことをお勧めします。main.prisma
、schema.prisma
、base.prisma
など、うまく機能する例をいくつか見てきました。
例
dub.co による dub
のフォーク は、複数ファイル Prisma スキーマを使用するように適合された実世界のプロジェクトの素晴らしい例です。