Installazione
Installazione di Prisma
Prisma si installa come dipendenza di sviluppo. Il client generato viene poi usato come dipendenza di produzione.
1. Installare le dipendenze
# Prisma CLI come dev dependency
npm install prisma --save-dev
# Prisma Client come dependency di produzione
npm install @prisma/client
2. Inizializzare Prisma
Il comando init crea la struttura base del progetto Prisma:
# Inizializzazione con PostgreSQL (default)
npx prisma init
# Specificare un provider diverso
npx prisma init --datasource-provider sqlite
npx prisma init --datasource-provider mysql
npx prisma init --datasource-provider mongodb
Questo crea due file:
prisma/schema.prisma: il file di definizione dello schema..env: il file per le variabili d’ambiente (contieneDATABASE_URL).
3. Configurare il Database
PostgreSQL
DATABASE_URL="postgresql://utente:password@localhost:5432/nome_database?schema=public"
MySQL
DATABASE_URL="mysql://utente:password@localhost:3306/nome_database"
SQLite
DATABASE_URL="file:./dev.db"
Lo schema si aggiorna di conseguenza:
datasource db {
provider = "sqlite" // "postgresql", "mysql", "mongodb", "sqlserver"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
4. Definire un Modello Iniziale
Aggiungi almeno un modello per testare la configurazione:
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
createdAt DateTime @default(now())
}
5. Applicare lo Schema e Generare il Client
# In sviluppo: crea migrazione + applica + genera client
npx prisma migrate dev --name init
# Alternativa rapida senza migrazioni (prototipazione)
npx prisma db push
6. Generare il Client Manualmente
Se modifichi lo schema senza migrare, puoi rigenerare il client separatamente:
npx prisma generate
Questo aggiorna i tipi TypeScript in node_modules/@prisma/client.
7. Verificare il Funzionamento
Crea un file di test per assicurarti che tutto funzioni:
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function main() {
const user = await prisma.user.create({
data: {
email: 'test@example.com',
name: 'Test User',
},
})
console.log('Utente creato:', user)
const users = await prisma.user.findMany()
console.log('Tutti gli utenti:', users)
}
main()
.catch((e) => {
console.error(e)
process.exit(1)
})
.finally(async () => {
await prisma.$disconnect()
})
Setup con TypeScript
Se il progetto non ha ancora TypeScript configurato:
npm install typescript ts-node @types/node --save-dev
npx tsc --init
Nel tsconfig.json assicurati di avere:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"outDir": "./dist"
}
}
Comandi CLI Essenziali
| Comando | Descrizione |
|---|---|
npx prisma init |
Inizializza Prisma nel progetto |
npx prisma generate |
Rigenera il Prisma Client |
npx prisma migrate dev |
Crea e applica una migrazione |
npx prisma db push |
Sincronizza lo schema senza migrazioni |
npx prisma studio |
Apre la GUI web per esplorare i dati |
npx prisma format |
Formatta il file schema.prisma |
npx prisma validate |
Valida il file schema.prisma |