prisma-orm-v7-skills

Par elophanto · elophanto

Faits essentiels et changements importants pour la mise à niveau vers Prisma ORM 7. Prenez en compte les changements de la version 7 avant toute génération ou résolution de problèmes.

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

Déclencheurs

  • prisma
  • orm
  • database
  • schema
  • migration
  • prisma client
  • prisma migrate
  • prisma studio
  • db schema
  • data model

Liens

Mise à jour

# Mettre à jour les dépendances
pnpm add @prisma/client@7
pnpm add -D prisma@7

Changements majeurs (v7)

Versions minimales

  • Node.js : 20.19.0+ (et 22.x)
  • TypeScript : 5.4.0+

Prisma est maintenant ESM

  • Prisma ORM est distribué sous forme de modules ES.
  • Définissez "type": "module" dans package.json (ou migrez votre projet vers ESM).
  • Les projets TypeScript doivent compiler/résoudre ESM (exemple de guide : module: ESNext, target: ES2023, moduleResolution: node).

Modifications du schéma Prisma et de la génération

  • Fournisseur du générateur : prisma-client-jsprisma-client.
  • output est obligatoire dans generator client.
  • Prisma Client n'est plus généré dans node_modules par défaut.
  • Après npx prisma generate, mettez à jour les imports vers votre chemin de sortie généré (exemple : import { PrismaClient } from './generated/prisma/client').

Dépréciation de la datasource du schéma :

  • url, directUrl, shadowDatabaseUrl dans schema.prisma sont dépréciés.
  • Déplacez la configuration de la datasource vers prisma.config.ts (Prisma Config).
  • Si vous utilisiez directUrl pour les migrations, définissez la chaîne de connexion de migration CLI dans prisma.config.ts.

Adaptateurs de pilote requis pour Prisma Client (nouvelle instanciation)

  • La création de Prisma Client nécessite maintenant un adaptateur de pilote pour toutes les bases de données.
  • Exemples d'adaptateurs :
    • Postgres : @prisma/adapter-pg (utilisez PrismaPg avec une chaîne de connexion DB directe)
    • SQLite : @prisma/adapter-better-sqlite3

Utilisateurs de Prisma Accelerate (v6 → v7)

  • Ne transmettez pas les URLs Accelerate prisma:// ou prisma+postgres:// à un adaptateur de pilote.
  • Conservez l'URL Accelerate et instanciez Prisma Client avec l'extension Accelerate à la place.

Les variables d'env ne sont pas chargées par défaut

  • Prisma CLI ne charge plus automatiquement les fichiers .env en v7.
  • Chargez explicitement les variables d'env (par exemple import 'dotenv/config' dans prisma.config.ts, ou chargez l'env dans vos scripts).
  • Utilisateurs de Bun : aucun changement requis (bun charge .env automatiquement).

La configuration de Prisma CLI a été déplacée vers prisma.config.ts

  • Prisma Config est maintenant l'endroit par défaut pour configurer le comportement de Prisma CLI.
  • Placez prisma.config.ts à la racine du projet (à côté de package.json).
  • Configurez le chemin du schéma, le chemin des migrations/seed et l'URL de la datasource là-bas.

Middleware client supprimé

  • prisma.$use(...) a été supprimé.
  • Migrez la logique middleware vers les extensions Prisma Client.

Les métriques supprimées des extensions Prisma Client

  • La fonctionnalité de prévisualisation Metrics est supprimée en v7.
  • Utilisez votre pilote/adaptateur de base de données ou implémentez des compteurs personnalisés via les extensions.

Modifications du comportement de Migrate/seed/generate

  • L'ensemencement automatique après prisma migrate dev / prisma migrate reset a été supprimé.
    • Exécutez l'ensemencement explicitement : pnpm prisma db seed (ou pnpm exec prisma db seed).
  • Les drapeaux --skip-generate et --skip-seed ont été supprimés.
  • prisma migrate dev et prisma db push n'exécutent plus prisma generate automatiquement.
    • Exécutez pnpm prisma generate (ou pnpm exec prisma generate) explicitement.

Variables d'env spécifiques à Prisma supprimées

  • Variables d'env supprimées :
    • PRISMA_CLI_QUERY_ENGINE_TYPE
    • PRISMA_CLIENT_ENGINE_TYPE
    • PRISMA_QUERY_ENGINE_BINARY
    • PRISMA_QUERY_ENGINE_LIBRARY
    • PRISMA_GENERATE_SKIP_AUTOINSTALL
    • PRISMA_SKIP_POSTINSTALL_GENERATE
    • PRISMA_GENERATE_IN_POSTINSTALL
    • PRISMA_GENERATE_DATAPROXY
    • PRISMA_GENERATE_NO_ENGINE
    • PRISMA_CLIENT_NO_RETRY
    • PRISMA_MIGRATE_SKIP_GENERATE
    • PRISMA_MIGRATE_SKIP_SEED

Support de MongoDB

  • Prisma ORM 7 ne supporte pas encore MongoDB ; restez sur Prisma ORM 6 si vous avez besoin de MongoDB.

Liste de contrôle de mise à jour (rapide)

  • Mettez à jour les dépendances ; confirmez les versions Node/TypeScript.
  • Migrez vers ESM (ou ajustez votre runtime/build pour consommer ESM).
  • Mettez à jour le générateur schema.prisma vers provider = "prisma-client" et définissez output.
  • Exécutez pnpm prisma generate et mettez à jour les imports de Prisma Client vers le chemin de sortie généré.
  • Ajoutez prisma.config.ts à la racine du dépôt ; déplacez la configuration de datasource et chargez l'env explicitement.
  • Mettez à jour l'instanciation de Prisma Client pour utiliser un adaptateur de pilote (sauf si vous utilisez Accelerate).
  • Mettez à jour les workflows : exécutez pnpm prisma generate et pnpm prisma db seed explicitement.

Vérification

  • Le code a effectivement été exécuté (ou vérifié/linted selon les besoins) et la sortie de commande est enregistrée
  • Les dépendances et les versions runtime utilisées sont épinglées et enregistrées (par ex. requirements.txt, package.json + lockfile, .nvmrc)
  • Les erreurs ou avertissements émis par l'exécution sont traités ou explicitement acceptés avec une raison
  • Les nouvelles E/S externes (réseau, système de fichiers, BD) ont des délais d'expiration et une gestion des erreurs, pas d'échec silencieux
  • Les tests du changement ont été exécutés et le nombre de réussites/échecs est dans la transcription
  • Les secrets et les identifiants sont lus depuis l'env/secret store, pas en dur, et les fichiers .env ne sont pas validés

Skills similaires