Generating and Configuring Prisma Client
1. Running Client Generation
| Command | Effect |
prisma generate | Rebuilds client from schema |
postinstall | Add to package.json scripts for CI |
--no-engine | Skip engine (Accelerate-only) |
2. Understanding Generated Types
| Export | Description |
PrismaClient | Main client class |
Prisma | Namespace for input types, enums, helpers |
Model types | Per-model record types |
Prisma.UserCreateInput | Input shape for create |
Prisma.UserGetPayload<T> | Compute return type |
3. Configuring Custom Output Path
| Aspect | Detail |
| Why | Bundle-friendly; explicit imports |
| Import | import { PrismaClient } from "../generated/prisma" |
| Git | Add output dir to .gitignore |
4. Using Multiple Generators
generator client { provider = "prisma-client-js" output = "../generated/prisma" }
generator zod { provider = "zod-prisma-types" }
generator erd { provider = "prisma-erd-generator" output = "./erd.svg" }
| Generator | Purpose |
zod-prisma-types | Validation schemas |
prisma-erd-generator | ER diagram |
prisma-dbml-generator | DBML export |
5. Enabling Preview Features
| Feature | Use |
tracing | OpenTelemetry spans |
views | Read-only DB views |
driverAdapters | Edge runtimes |
queryCompiler | JS-only query compilation |
6. Regenerating After Schema Changes
Regeneration Workflow
- Edit
schema.prisma
- Run
prisma format
- Run
prisma migrate dev --name change
- Client regenerates automatically
- Restart TypeScript server in editor
| Trigger | Action |
| migrate dev | Auto-generate |
| db push | Auto-generate |
| CI install | Run prisma generate explicitly |
7. Understanding Client API Structure
| Level | Methods |
| Top-level | $connect, $disconnect, $transaction, $queryRaw, $extends |
| Model | findUnique, findMany, create, update, etc. |
| Aggregate | count, aggregate, groupBy |
8. Using Auto-Generated Model Types
import type { User, Post, Prisma } from "@prisma/client";
type UserWithPosts = Prisma.UserGetPayload<{ include: { posts: true } }>;
| Type | Use |
User | Base record type |
Prisma.UserGetPayload | Type result of a specific query |
Prisma.UserSelect | Allowed select keys |
9. Accessing Enums from Client
import { Role, Status } from "@prisma/client";
| Aspect | Detail |
| Type | TypeScript const enum-like object |
| Runtime | Frozen value map |
10. Configuring Engine Options
| Option | Effect |
PRISMA_QUERY_ENGINE_TYPE | Override engine type |
PRISMA_CLIENT_ENGINE_TYPE | Build-time engine selection |
PRISMA_QUERY_ENGINE_LIBRARY | Custom binary path |
NO_COLOR | Disable colored output |