Run erdFlow locally against any Prisma schema (fixtures or your project) with live UI.
| Process | Port | Role |
|---|---|---|
| CLI server | 4317 |
Detect / parse Prisma, /api/schema, /ws, file watch |
| Vite UI | 5173 |
Visualizer; proxies API + WebSocket to the CLI |
Vite alone shows Disconnected until the CLI is running.
cd erdFlow
pnpm install
pnpm --filter @erdflow/core build
pnpm --filter @erdflow/prisma build # rebuild after parser-prisma changes
# faster CLI-only rebuild (skips web):
# cd packages/prisma && pnpm exec tsup && cp -R public dist/publicUse a real path (no placeholders).
# Classic single file
node packages/prisma/dist/cli.js --no-open --prisma packages/parser-prisma/fixtures/basic.prisma
# v6-style
node packages/prisma/dist/cli.js --no-open --prisma packages/parser-prisma/fixtures/v6-classic/schema.prisma
# v7 url-less datasource
node packages/prisma/dist/cli.js --no-open --prisma packages/parser-prisma/fixtures/v7-url-less/schema.prisma
# v7 multi-file folder
node packages/prisma/dist/cli.js --no-open --prisma packages/parser-prisma/fixtures/v7-multifile/prisma/schema
# v7 custom path via config (run from that fixture root for auto-detect)
cd packages/parser-prisma/fixtures/v7-config-custom
node ../../../prisma/dist/cli.js --no-open
# or from monorepo root:
# node packages/prisma/dist/cli.js --no-open --prisma packages/parser-prisma/fixtures/v7-config-custom/db/schema.prismaFull fixture list: fixtures.md.
# Single schema file
node packages/prisma/dist/cli.js --no-open --prisma /absolute/path/to/schema.prisma
# Multi-file schema directory
node packages/prisma/dist/cli.js --no-open --prisma /absolute/path/to/prisma/schema
# Auto-detect from project root (schema.prisma, prisma/schema/, or prisma.config.ts)
cd /path/to/your/prisma-project
node /absolute/path/to/erdFlow/packages/prisma/dist/cli.js --no-openExpected CLI output:
✓ Detected Prisma
✓ …/schema.prisma
✓ N entities · … enums · … relations · … indexes
→ http://127.0.0.1:4317/
Watching schema files for changes...
Leave this terminal running. --no-open skips opening a browser (use Vite instead).
cd erdFlow
pnpm --filter web devOpen http://localhost:5173.
- Edit React under
packages/web//apps/web/→ hot reload. - Edit watched
.prismafiles → CLI re-parses and pushes over WebSocket.
pnpm --filter @erdflow/prisma build
node packages/prisma/dist/cli.js --prisma packages/parser-prisma/fixtures/basic.prismaOpen http://127.0.0.1:4317 (omit --no-open to auto-open).
| Flag | Meaning |
|---|---|
--prisma <path> |
Schema file or directory |
--no-open |
Don’t open browser (pair with Vite) |
--no-watch |
Disable live re-parse |
--port <n> |
Server port (default 4317) |
Layouts / resolution: layouts-v6-v7.md. Problems: troubleshooting.md.