prisma-upgrade-v7

--- Guide complet de migration de Prisma ORM v6 vers v7 couvrant tous les changements de rupture. À utiliser lors de la mise à niveau des versions de Prisma, de la rencontre d'erreurs v7 ou de la migration de projets existants. Se déclenche sur « upgrade to prisma 7 », « prisma 7 migration », « prisma-client generator », « driver adapter required ».

npx skills add https://github.com/prisma/skills --skill prisma-upgrade-v7

Mise à jour vers Prisma ORM 7

Guide complet pour migrer de Prisma ORM v6 à v7. Cette mise à jour introduit des modifications majeures autour du nouveau générateur prisma-client, des adaptateurs de pilotes, de prisma.config.ts, du chargement explicite de l'environnement et des points d'entrée du client généré.

Quand l'appliquer

Consultez cette compétence quand :

  • Mise à niveau de Prisma v6 à v7
  • Mise à jour du générateur prisma-client
  • Configuration des adaptateurs de pilotes
  • Configuration de prisma.config.ts
  • Correction des erreurs d'importation après la mise à niveau

Catégories de règles par priorité

Priorité Catégorie Impact Préfixe
1 Schéma Migration CRITIQUE schema-changes
2 Connectivité base de données CRITIQUE driver-adapters
3 Système de modules CRITIQUE esm-support
4 Config et Env ÉLEVÉ prisma-config, env-variables
5 Fonctionnalités supprimées ÉLEVÉ removed-features
6 Accelerate ÉLEVÉ accelerate-users

Référence rapide

  • schema-changes - migration du générateur, chemins de sortie requis, points d'entrée générés et remplacement de Prisma.validator
  • driver-adapters - installation obligatoire d'adaptateurs pour les fournisseurs SQL, différences de pool et choix d'adaptateurs Prisma Postgres
  • esm-support - configuration ESM-first avec secours CommonJS en utilisant moduleFormat = "cjs"
  • prisma-config - création et utilisation de prisma.config.ts
  • env-variables - chargement explicite de l'environnement
  • removed-features - intergiciels supprimés, métriques et comportement CLI hérité
  • accelerate-users - notes de migration pour les utilisateurs d'Accelerate

Notes importantes

  • Les projets MongoDB doivent rester sur Prisma 6.x - ne migrez pas les applications MongoDB vers le chemin du client SQL de Prisma 7
  • Node.js 20.19.0+ requis
  • TypeScript 5.4.0+ requis
  • Version stable la plus récente de Prisma ORM : 7.6.0

Aperçu des étapes de mise à niveau

  1. Mettre à jour les packages vers v7
  2. Choisir votre format de module (esm par défaut, cjs si nécessaire)
  3. Mettre à jour la configuration TypeScript
  4. Mettre à jour le bloc du générateur de schéma
  5. Créer prisma.config.ts
  6. Installer et configurer un adaptateur de pilote pour les fournisseurs SQL
  7. Mettre à jour les importations de Prisma Client
  8. Mettre à jour l'instanciation du client
  9. Remplacer les motifs d'assistance dépréciés comme Prisma.validator
  10. Exécuter prisma generate et tester

Commandes de mise à niveau rapide

# Mettre à jour les packages
npm install @prisma/client@7
npm install -D prisma@7

# Installer un adaptateur de pilote (PostgreSQL ou Prisma Postgres via TCP direct)
npm install @prisma/adapter-pg pg

# Installer dotenv pour le chargement de l'environnement
npm install dotenv

# Régénérer le client
npx prisma generate

Résumé des modifications majeures

Modification v6 v7
Format de module Implicite / mixte ESM-first, moduleFormat = "cjs" supporté
Fournisseur de générateur prisma-client-js prisma-client par défaut, tandis que prisma-client-js existe toujours pour les configurations héritées
Chemin de sortie Auto (node_modules) Explicite requis
Adaptateurs de pilotes Optionnel Requis pour les fournisseurs SQL
Fichier de configuration .env + schéma prisma.config.ts
Chargement de l'environnement Automatique Manuel (dotenv)
Points d'entrée générés Export de package unique Points d'entrée client, browser, models, enums
Fragments de requête type-safe Prisma.validator() TypeScript satisfies
Intergiciel $use() Extensions du client
Métriques Fonctionnalité en aperçu Supprimée

Fichiers de règles

Guides de migration détaillés pour chaque modification majeure :

references/esm-support.md        - Configuration ESM et CommonJS
references/schema-changes.md     - Générateur, sortie, importations et points d'entrée générés
references/driver-adapters.md    - Configuration obligatoire de l'adaptateur de pilote
references/prisma-config.md      - Nouveau fichier de configuration
references/env-variables.md      - Chargement des variables d'environnement
references/removed-features.md   - Intergiciels supprimés, métriques et drapeaux CLI
references/accelerate-users.md   - Gestion spéciale pour Accelerate

Migration étape par étape

1. Mettre à jour package.json pour les projets ESM-first

{
  "type": "module"
}

Si vous devez rester sur CommonJS, gardez votre application en tant que CJS et définissez moduleFormat = "cjs" dans le bloc du générateur à la place de forcer ESM.

2. Mettre à jour tsconfig.json

{
  "compilerOptions": {
    "module": "ESNext",
    "moduleResolution": "bundler",
    "target": "ES2023",
    "strict": true,
    "esModuleInterop": true
  }
}

3. Mettre à jour schema.prisma

// Avant (v6)
generator client {
  provider = "prisma-client-js"
}

// Après (v7)
generator client {
  provider = "prisma-client"
  output   = "../generated/prisma"
  // Optionnel si vous avez besoin de CommonJS :
  // moduleFormat = "cjs"
}

4. Créer prisma.config.ts

import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'

export default defineConfig({
  schema: 'prisma/schema.prisma',
  migrations: {
    path: 'prisma/migrations',
  },
  datasource: {
    url: env('DATABASE_URL'),
  },
})

5. Installer un adaptateur de pilote (fournisseurs SQL uniquement)

# PostgreSQL
npm install @prisma/adapter-pg pg

# MySQL
npm install @prisma/adapter-mariadb mariadb

# SQLite
npm install @prisma/adapter-better-sqlite3 better-sqlite3

# Prisma Postgres dans les applications Node.js standard (recommandé)
npm install @prisma/adapter-pg pg

# Pilote serverless Prisma Postgres (edge/serverless)
npm install @prisma/adapter-ppg @prisma/ppg

# Neon
npm install @prisma/adapter-neon

MongoDB n'a pas de package SQL @prisma/adapter-* dans les packages Prisma 7.6.0 publiés. Si vous mettez à niveau un projet MongoDB, arrêtez-vous et gardez ce projet sur la dernière version Prisma 6.x au lieu de suivre le chemin de migration standard de Prisma 7.

6. Mettre à jour l'instanciation du client

// Avant (v6)
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()

// Après (v7)
import { PrismaClient } from '../generated/prisma/client'
import { PrismaPg } from '@prisma/adapter-pg'

const adapter = new PrismaPg({
  connectionString: process.env.DATABASE_URL
})

const prisma = new PrismaClient({ adapter })

7. Remplacer Prisma.validator par satisfies

import { Prisma } from '../generated/prisma/client'

const userSelect = {
  id: true,
  email: true,
  name: true,
} satisfies Prisma.UserSelect

8. Exécuter les migrations et générer

npx prisma generate
npx prisma migrate dev  # si nécessaire

Dépannage

Erreurs "Cannot find module"

  • Vérifiez que le chemin output du générateur correspond à votre chemin d'importation
  • Assurez-vous que prisma generate s'est exécuté avec succès

Erreurs de certificat SSL

  • Ajoutez ssl: { rejectUnauthorized: false } à la configuration de l'adaptateur si vous devez préserver l'ancien comportement
  • Ou configurez correctement vos certificats avec les paramètres NODE_EXTRA_CA_CERTS / OpenSSL CA

Problèmes d'expiration de connexion

  • Les adaptateurs de pilotes utilisent les valeurs par défaut du pilote sous-jacent, qui diffèrent de v6
  • Configurez explicitement les paramètres du pool sur l'adaptateur si nécessaire

Ressources

Comment l'utiliser

Suivez d'abord references/schema-changes.md et references/driver-adapters.md, puis appliquez les fichiers de référence restants en fonction de la configuration de votre projet.