wip
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
# 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'
|
||||
```
|
||||
Reference in New Issue
Block a user