Installing and Configuring Prisma

1. Installing Prisma CLI

PackagePurposeInstall
prismaCLI tool (dev dependency)npm i -D prisma
@prisma/clientRuntime client (prod)npm i @prisma/client
tsxTypeScript seed runnernpm i -D tsx
npm install -D prisma
npm install @prisma/client
npx prisma --version  # verify: prisma 6.x

2. Initializing Prisma Project

CommandEffect
prisma initCreates prisma/schema.prisma + .env
--datasource-provider postgresqlSets DB provider in datasource block
--url "<CONN>"Inline DATABASE_URL
--output ./generatedCustom client output (Prisma 6+)
npx prisma init --datasource-provider postgresql

3. Configuring Database Connection

ProviderURL Format
PostgreSQLpostgresql://USER:PASS@HOST:5432/DB?schema=public
MySQLmysql://USER:PASS@HOST:3306/DB
SQLitefile:./dev.db
SQL Serversqlserver://HOST:1433;database=DB;user=U;password=P
MongoDBmongodb+srv://USER:PASS@HOST/DB

Example: schema.prisma datasource

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

4. Setting Up Client Generator

FieldPurposeDefault
providerGenerator nameprisma-client-js
outputClient output dirnode_modules/.prisma/client
previewFeaturesOpt-in features
binaryTargetsEngine binaries["native"]
engineTypeEngine typelibrary
generator client {
  provider        = "prisma-client-js"
  output          = "../generated/prisma"
  previewFeatures = ["fullTextSearchPostgres", "tracing"]
  binaryTargets   = ["native", "linux-musl-openssl-3.0.x"]
}

5. Configuring Environment Variables

VariablePurpose
DATABASE_URLPrimary connection string
SHADOW_DATABASE_URLMigration shadow DB
DIRECT_URLDirect DB URL bypassing pooler
PRISMA_HIDE_UPDATE_MESSAGEHide CLI update notices

6. Setting Custom Output Directory

Note: Prisma 6+ requires explicit output path; the default node_modules/.prisma/client location is deprecated. Add the generated folder to .gitignore.
PatternUse Case
../src/generated/prismaInside source tree (committed-friendly)
../node_modules/@prisma/clientLegacy default DEPRECATED

7. Enabling Preview Features

FeatureDescription
driverAdaptersUse external DB drivers (libsql, Neon, PlanetScale)
fullTextSearchPostgresFull-text search for PostgreSQL
multiSchemaMultiple PostgreSQL schemas
tracingOpenTelemetry tracing
viewsDatabase views support
relationJoinsDatabase-level joins for include/select

8. Configuring Binary Targets

TargetPlatform
nativeCurrent OS (dev)
linux-musl-openssl-3.0.xAlpine Docker, AWS Lambda Node 20
debian-openssl-3.0.xDebian/Ubuntu containers
rhel-openssl-3.0.xAmazon Linux 2, RHEL
darwin-arm64Apple Silicon
windowsWindows x64

9. Setting Engine Type

EngineDescriptionUse Case
libraryNode-API binding (default)Standard apps
binarySeparate child processSandboxed runtimes
client NEWPure JS, no Rust engineEdge/serverless via driver adapters

10. Configuring Logging Levels

LevelOutputs
querySQL queries with params
infoConnection info, lifecycle
warnNon-fatal warnings
errorErrors only (default)
const prisma = new PrismaClient({
  log: [
    { emit: "event", level: "query" },
    { emit: "stdout", level: "warn" },
    { emit: "stdout", level: "error" }
  ]
});