У чому різниця між Prisma 6 та 7? Чому варто переходити?
Головна архітектурна зміна — це відрив конфігурації підключення від самої схеми бази даних.
Раніше (в 6-й версії) ми були змушені хардкодити шлях до змінних оточення прямо в schema.prisma за допомогою env("DATABASE_URL"). Це працювало, але коли проєкт розростався, з'являлися проблеми: складнощі з монорепозиторіями, незручності при написанні кастомних скриптів для CI/CD та милиці з підключенням різних баз (наприклад, для тестів і продакшену).
Профіт Prisma 7 для програміста:
Чиста схема: Твій
schema.prismaтепер відповідає виключно за моделі даних (таблиці) та генератори. Жодної логіки підключення!TypeScript-first конфігурація: З'явився файл
prisma.config.ts. Це означає, що тепер ти можеш використовувати всю міць TypeScript і Node.js для налаштування підключення: імпортуватиdotenv, динамічно формувати URL, підтягувати секрети з зовнішніх сервісів.Ідеально для складних платформ: Якщо твій сервіс-каталог розростається і вимагає складної логіки міграцій чи підключення до пулерів з'єднань, TS-конфіг робить цей процес контрольованим і прозорим.
Як перейти на Prisma 7?
Перехід не складний, не варто його боятися. Але потрібно налаштувати все правильно, крок за кроком. Оскільки в своїх проєктах я використовую пакетний менеджер pnpm, всі команди будуть для нього.
1. Видаляємо Prisma 6 та старі залежності
Спочатку очистимо проєкт від старих версій. Відкриваємо термінал і пишемо:
Bash
pnpm remove prisma @prisma/client
2. Встановлюємо Prisma 7
Тепер ставимо свіжі пакети:
Bash
pnpm add -D prisma
pnpm add @prisma/client
3. Оновлюємо файли налаштувань
Тепер найголовніше — адаптуємо код. Відкриваємо наш старий добрий файл prisma/schema.prisma і безжально видаляємо з блоку datasource db рядок з url.
Тепер він має виглядати максимально мінімалістично:
Фрагмент коду
// prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
}
// ... далі йдуть твої моделі
Далі, в корені твого проєкту (там, де лежить package.json), створюємо новий файл конфігурації prisma.config.ts і прописуємо логіку підключення:
TypeScript
// prisma.config.ts
import 'dotenv/config'
import { defineConfig } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: process.env['DATABASE_URL'],
},
})
Зверни увагу: ми імпортуємо dotenv/config, що гарантує, що змінні з твого .env файлу будуть успішно прочитані ще до ініціалізації Prisma.
4. Генеруємо клієнт
Останній крок. Щоб Prisma підтягнула новий конфіг і перегенерувала типи для твого TypeScript-коду, просто запускаємо:
Bash
pnpm prisma generate
Ось і все! Твій проєкт успішно переведено на Prisma 7. База даних працює стабільно, код став чистішим, а архітектура — більш готовою до масштабування.
How to upgrade to Prisma 7?
The transition isn't difficult, so there's no need to be afraid of it. But you need to set everything up correctly, step by step. Since I use the pnpm package manager in my projects, all commands will be tailored for it.
1. Remove Prisma 6 and old dependencies
First, let's clean the project from the old versions. Open the terminal and type:
Bash
pnpm remove prisma @prisma/client
2. Install Prisma 7
Now let's install the fresh packages:
Bash
pnpm add -D prisma
pnpm add @prisma/client
3. Update configuration files
Now for the most important part — adapting the code. Open our good old prisma/schema.prisma file and ruthlessly delete the url line from the datasource db block.
Now it should look as minimalist as possible:
Фрагмент коду
// prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
}
// ... your models go here
Next, in the root of your project (where package.json lives), create a new configuration file prisma.config.ts and write the connection logic:
TypeScript
// prisma.config.ts
import 'dotenv/config'
import { defineConfig } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: process.env['DATABASE_URL'],
},
})
Note: we import dotenv/config, which guarantees that the variables from your .env file will be successfully read before Prisma initializes.
4. Generate the client
The final step. For Prisma to pick up the new config and regenerate the types for your TypeScript code, just run:
Bash
pnpm prisma generate
That's it! Your project has been successfully upgraded to Prisma 7. The database runs stably, the code has become cleaner, and the architecture is much more ready for scaling.
