Skip to content

NOTE

**Примечание** — Система динамической загрузки подкоманд Prisma в настоящее время требует установки npm alongside Bun. Это влияет на некоторые команды CLI, такие как `prisma init`, `prisma migrate` и т.д. Сгенерированный код работает отлично с Bun, используя новый генератор `prisma-client`.

Создание нового проекта

Prisma работает из коробки с Bun. Сначала создайте директорию и инициализируйте её с помощью bun init.

bash
mkdir prisma-app
cd prisma-app
bun init

Установка зависимостей Prisma

Затем установите CLI Prisma (prisma), Prisma Client (@prisma/client) и LibSQL адаптер в качестве зависимостей.

bash
bun add -d prisma
bun add @prisma/client @prisma/adapter-libsql

Инициализация Prisma с SQLite

Мы будем использовать CLI Prisma с bunx для инициализации нашей схемы и директории миграций. Для простоты мы будем использовать встроенную базу данных SQLite.

bash
bunx --bun prisma init --datasource-provider sqlite

Это создаёт базовую схему. Нам нужно обновить её для использования нового клиента без Rust с оптимизацией Bun. Откройте prisma/schema.prisma и измените блок генератора, затем добавьте простую модель User.

prisma
generator client {
  provider = "prisma-client"
  output = "./generated"
  engineType = "client"
  runtime = "bun"
}

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

model User { 
  id    Int     @id @default(autoincrement()) 
  email String  @unique
  name  String?
} 

Создание и запуск миграции базы данных

Затем сгенерируйте и выполните начальную миграцию.

Это создаст файл миграции .sql в prisma/migrations, создаст новый экземпляр SQLite и выполнит миграцию на новом экземпляре.

bash
bunx --bun prisma migrate dev --name init
txt
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": SQLite database "dev.db" at "file:./dev.db"

SQLite database dev.db created at file:./dev.db

Applying migration `20251014141233_init`

The following migration(s) have been created and applied from new schema changes:

prisma/migrations/
  └─ 20251014141233_init/
  └─ migration.sql

Your database is now in sync with your schema.

✔ Generated Prisma Client (6.17.1) to ./generated in 18ms

Генерация Prisma Client

Как указано в выводе, Prisma повторно генерирует наш Prisma client всякий раз, когда мы выполняем новую миграцию. Клиент предоставляет полностью типизированный API для чтения и записи из нашей базы данных. Вы можете вручную перегенерировать клиент с помощью CLI Prisma.

sh
bunx --bun prisma generate

Инициализация Prisma Client с LibSQL

Теперь нам нужно создать экземпляр Prisma client. Создайте новый файл prisma/db.ts для инициализации PrismaClient с LibSQL адаптером.

ts
import { PrismaClient } from "./generated/client";
import { PrismaLibSQL } from "@prisma/adapter-libsql";

const adapter = new PrismaLibSQL({ url: process.env.DATABASE_URL || "" });
export const prisma = new PrismaClient({ adapter });

Создание тестового скрипта

Давайте напишем простой скрипт для создания нового пользователя, затем подсчитаем количество пользователей в базе данных.

ts
import { prisma } from "./prisma/db";

// создать нового пользователя
await prisma.user.create({
  data: {
    name: "John Dough",
    email: `john-${Math.random()}@example.com`,
  },
});

// подсчитать количество пользователей
const count = await prisma.user.count();
console.log(`В базе данных ${count} пользователей.`);

Запуск и тестирование приложения

Давайте запустим этот скрипт с помощью bun run. Каждый раз, когда мы запускаем его, создаётся новый пользователь.

bash
bun run index.ts
txt
Created john-0.12802932895402364@example.com
В базе данных 1 пользователей.
bash
bun run index.ts
txt
Created john-0.8671308799782803@example.com
В базе данных 2 пользователей.
bash
bun run index.ts
txt
Created john-0.4465968383115295@example.com
В базе данных 3 пользователей.

Вот и всё! Теперь, когда вы настроили Prisma с Bun, мы рекомендуем обращаться к официальной документации Prisma по мере дальнейшей разработки вашего приложения.

Bun от www.bunjs.com.cn