想定読者
Prismaで「npx prisma generate」をコマンドした時に何が起きているのか知りたい人
書いている人間
Prisma触り始めた初心者
結論
複数のファイルが作成される
どうやって確かめたか
まずは、git initする。
公式ドキュメントの記載に沿って、schema.prismaで以下を記載する。
generator client {
provider = "prisma-client-js"
output = "../src/generated/client"//ここを追記
}
こうすることで、npx prisma generateした時のoutput pathが
../src/generated/clientになる。
準備が終わったので、npx prisma generateする。
ここまできたら、git statusなどで確認する。
% git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: prisma/schema.prisma
Untracked files:
(use "git add <file>..." to include in what will be committed)
src/
no changes added to commit (use "git add" and/or "git commit -a")
% git add .
% git commit
[main 805281f]
21 files changed, 7993 insertions(+)
create mode 100644 src/generated/client/default.d.ts
create mode 100644 src/generated/client/default.js
create mode 100644 src/generated/client/edge.d.ts
create mode 100644 src/generated/client/edge.js
create mode 100644 src/generated/client/index-browser.js
create mode 100644 src/generated/client/index.d.ts
create mode 100644 src/generated/client/index.js
create mode 100755 src/generated/client/libquery_engine-darwin.dylib.node
create mode 100644 src/generated/client/package.json
create mode 100644 src/generated/client/runtime/edge-esm.js
create mode 100644 src/generated/client/runtime/edge.js
create mode 100644 src/generated/client/runtime/index-browser.d.ts
create mode 100644 src/generated/client/runtime/index-browser.js
create mode 100644 src/generated/client/runtime/library.d.ts
create mode 100644 src/generated/client/runtime/library.js
create mode 100644 src/generated/client/runtime/react-native.js
create mode 100644 src/generated/client/runtime/wasm.js
create mode 100644 src/generated/client/schema.prisma
create mode 100644 src/generated/client/wasm.d.ts
create mode 100644 src/generated/client/wasm.js
上記のファイルが生成されていた。
では、schema.prismaに以下を追記した状態で、さらにnpx prisma generateしたらどうなるのか試してみた。
model Hoge {
id Int @default(autoincrement()) @id
title String
}
npx prisma generate を実行
git statusを実行
% git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: prisma/schema.prisma
modified: src/generated/client/edge.js
modified: src/generated/client/index-browser.js
modified: src/generated/client/index.d.ts
modified: src/generated/client/index.js
modified: src/generated/client/package.json
modified: src/generated/client/schema.prisma
modified: src/generated/client/wasm.js
no changes added to commit (use "git add" and/or "git commit -a")
git diff を実行。
※長かったので、ごく一部のみ抜粋した。
% git diff
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 6b791ff..ac93e9c 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -23,4 +23,9 @@ model Posts {
model Piyo {
id Int @default(autoincrement()) @id
title String
+}
+
+model Hoge {
+ id Int @default(autoincrement()) @id
+ title String
}
→当たり前ですが、schema.prismaのmodelを編集すれば、npx prisma generateで作成されるファイルも修正されるということがわかりました。
npx prisma genrateで何しているのか、GPTに聞いてみた
要約すると、
(1)Prismaクライアントの生成
(2)TypeScriptの型情報の生成
※本当は公式ドキュメントを読むべきです。
公式ドキュメントの部分、今後記載します。
感想
npx prisma generateはいつもルーチンでコマンドしていたが、npx prisma migrate dev と違って、何をしているのかよくわかっていませんでした。
今回調べられて、目に見える形で何しているのかを知ることができてよかったです。(それまでは「型ファイル」を作成するものくらいの認識だったため)(またコマンドする時に、何をしているのかわからない状態で打つのがストレスだった)