174 lines
3.4 KiB
Markdown
174 lines
3.4 KiB
Markdown
# prisma generate
|
|
|
|
Generates assets based on the generator blocks in your Prisma schema, most commonly Prisma Client.
|
|
|
|
## Command
|
|
|
|
```bash
|
|
prisma generate [options]
|
|
```
|
|
|
|
## Bun Runtime
|
|
|
|
If you're using Bun, run Prisma with `bunx --bun` so it doesn't fall back to Node.js:
|
|
|
|
```bash
|
|
bunx --bun prisma generate
|
|
```
|
|
|
|
## What It Does
|
|
|
|
1. Reads your `schema.prisma` file
|
|
2. Generates a customized Prisma Client based on your models
|
|
3. 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
|
|
|
|
```bash
|
|
prisma generate
|
|
```
|
|
|
|
### Watch mode (development)
|
|
|
|
```bash
|
|
prisma generate --watch
|
|
```
|
|
|
|
Auto-regenerates when `schema.prisma` changes.
|
|
|
|
### Specific generator
|
|
|
|
```bash
|
|
prisma generate --generator client
|
|
```
|
|
|
|
### Multiple generators
|
|
|
|
```bash
|
|
prisma generate --generator client --generator zod_schemas
|
|
```
|
|
|
|
### Typed SQL generation
|
|
|
|
```bash
|
|
prisma generate --sql
|
|
```
|
|
|
|
## Schema Configuration
|
|
|
|
```prisma
|
|
generator client {
|
|
provider = "prisma-client"
|
|
output = "../generated"
|
|
}
|
|
```
|
|
|
|
### Current Generator Behavior
|
|
|
|
- `prisma-client` is the standard generator
|
|
- `output` is required when using `prisma-client`
|
|
- `prisma-client` supports both ESM and CommonJS via `moduleFormat`
|
|
- `compilerBuild` supports `fast` and `small` query compiler artifacts
|
|
- Use TypeScript `satisfies` for typed query fragments with `prisma-client`
|
|
- Import Prisma Client from your generated output path, for example:
|
|
|
|
```typescript
|
|
import { PrismaClient } from '../generated/prisma/client'
|
|
```
|
|
|
|
### Compiler Build Tuning
|
|
|
|
Use `compilerBuild` when you need to trade artifact size against the default build:
|
|
|
|
```prisma
|
|
generator client {
|
|
provider = "prisma-client"
|
|
output = "../generated"
|
|
compilerBuild = "small"
|
|
}
|
|
```
|
|
|
|
- `fast` is the default build for most targets
|
|
- `small` is useful for size-constrained targets
|
|
- Prisma defaults `vercel-edge` targets to `small`
|
|
|
|
## Common Patterns
|
|
|
|
### After schema changes
|
|
|
|
```bash
|
|
prisma migrate dev --name my_migration
|
|
prisma generate
|
|
```
|
|
|
|
Run `prisma generate` whenever you need refreshed client code after schema-changing commands.
|
|
|
|
### CI/CD pipeline
|
|
|
|
```bash
|
|
prisma generate
|
|
```
|
|
|
|
Run before building your application.
|
|
|
|
### Multiple generators
|
|
|
|
```prisma
|
|
generator client {
|
|
provider = "prisma-client"
|
|
output = "../generated"
|
|
}
|
|
|
|
generator zod {
|
|
provider = "zod-prisma-types"
|
|
output = "../generated/zod"
|
|
}
|
|
```
|
|
|
|
```bash
|
|
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:
|
|
|
|
```typescript
|
|
import { PrismaClient, Prisma } from '../generated/prisma/client'
|
|
```
|
|
|
|
Import browser-safe types:
|
|
|
|
```typescript
|
|
import { Prisma } from '../generated/prisma/browser'
|
|
import { Role } from '../generated/prisma/enums'
|
|
import type { UserModel } from '../generated/prisma/models/User'
|
|
```
|