Base app architecture:
Route groups for customer, staff and owner.
* Reusable design system with around 20 UI components.
* Complete Prisma schema.
* Authentication with email/password and Google.
* Role and permission model.
* Protected routes.
* Clean separation between features, services, components and shared utilities.
3.4 KiB
3.4 KiB
prisma generate
Generates assets based on the generator blocks in your Prisma schema, most commonly Prisma Client.
Command
prisma generate [options]
Bun Runtime
If you're using Bun, run Prisma with bunx --bun so it doesn't fall back to Node.js:
bunx --bun prisma generate
What It Does
- Reads your
schema.prismafile - Generates a customized Prisma Client based on your models
- Outputs to the directory specified in the generator block
Options
| Option | Description |
|---|---|
--schema |
Custom path to your Prisma schema |
--config |
Custom path to your Prisma config file |
--sql |
Generate typed sql module |
--watch |
Watch the Prisma schema and rerun after a change |
--generator |
Generator to use (may be provided multiple times) |
--no-hints |
Hides the hint messages but still outputs errors and warnings |
--require-models |
Do not allow generating a client without models |
Examples
Basic generation
prisma generate
Watch mode (development)
prisma generate --watch
Auto-regenerates when schema.prisma changes.
Specific generator
prisma generate --generator client
Multiple generators
prisma generate --generator client --generator zod_schemas
Typed SQL generation
prisma generate --sql
Schema Configuration
generator client {
provider = "prisma-client"
output = "../generated"
}
Current Generator Behavior
prisma-clientis the standard generatoroutputis required when usingprisma-clientprisma-clientsupports both ESM and CommonJS viamoduleFormatcompilerBuildsupportsfastandsmallquery compiler artifacts- Use TypeScript
satisfiesfor typed query fragments withprisma-client - Import Prisma Client from your generated output path, for example:
import { PrismaClient } from '../generated/prisma/client'
Compiler Build Tuning
Use compilerBuild when you need to trade artifact size against the default build:
generator client {
provider = "prisma-client"
output = "../generated"
compilerBuild = "small"
}
fastis the default build for most targetssmallis useful for size-constrained targets- Prisma defaults
vercel-edgetargets tosmall
Common Patterns
After schema changes
prisma migrate dev --name my_migration
prisma generate
Run prisma generate whenever you need refreshed client code after schema-changing commands.
CI/CD pipeline
prisma generate
Run before building your application.
Multiple generators
generator client {
provider = "prisma-client"
output = "../generated"
}
generator zod {
provider = "zod-prisma-types"
output = "../generated/zod"
}
prisma generate # Runs all generators
Output Structure
After running prisma generate, your output directory contains:
generated/
├── browser.ts
├── client.ts
├── commonInputTypes.ts
├── models/
├── enums.ts
├── models.ts
└── ...
Import the client:
import { PrismaClient, Prisma } from '../generated/prisma/client'
Import browser-safe types:
import { Prisma } from '../generated/prisma/browser'
import { Role } from '../generated/prisma/enums'
import type { UserModel } from '../generated/prisma/models/User'