Skip to content

NOTE

**Nota** — El sistema de carga de subcomandos dinámicos de Prisma actualmente requiere que npm esté instalado junto con Bun. Esto afecta ciertos comandos de CLI como `prisma init`, `prisma migrate`, etc. El código generado funciona perfectamente con Bun usando el nuevo generador `prisma-client`.

Crear un nuevo proyecto

Prisma funciona fuera de la caja con Bun. Primero, crea un directorio e inicialízalo con bun init.

bash
mkdir prisma-app
cd prisma-app
bun init

Instalar dependencias de Prisma

Luego instala el CLI de Prisma (prisma), Prisma Client (@prisma/client), y el adaptador LibSQL como dependencias.

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

Inicializar Prisma con SQLite

Usaremos el CLI de Prisma con bunx para inicializar nuestro esquema y directorio de migraciones. Por simplicidad usaremos una base de datos SQLite en memoria.

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

Esto crea un esquema básico. Necesitamos actualizarlo para usar el nuevo cliente sin Rust con optimización de Bun. Abre prisma/schema.prisma y modifica el bloque del generador, luego agrega un modelo simple 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?
} 

Crear y ejecutar migración de base de datos

Luego genera y ejecuta la migración inicial.

Esto creará un archivo de migración .sql en prisma/migrations, creará una nueva instancia SQLite y ejecutará la migración contra la nueva instancia.

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

Generar Prisma Client

Como se indica en la salida, Prisma vuelve a generar nuestro Prisma client cada vez que ejecutamos una nueva migración. El cliente proporciona una API completamente tipificada para leer y escribir en nuestra base de datos. Puedes regenerar manualmente el cliente con el CLI de Prisma.

sh
bunx --bun prisma generate

Inicializar Prisma Client con LibSQL

Ahora necesitamos crear una instancia de Prisma client. Crea un nuevo archivo prisma/db.ts para inicializar el PrismaClient con el adaptador 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 });

Crear un script de prueba

Escribamos un script simple para crear un nuevo usuario, luego contar el número de usuarios en la base de datos.

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

// crear un nuevo usuario
await prisma.user.create({
	data: {
	name: "John Dough",
	email: `john-${Math.random()}@example.com`,
	},
});

// contar el número de usuarios
const count = await prisma.user.count();
console.log(`Hay ${count} usuarios en la base de datos.`);

Ejecutar y probar la aplicación

Ejecutemos este script con bun run. Cada vez que lo ejecutamos, se crea un nuevo usuario.

bash
bun run index.ts
txt
Created john-0.12802932895402364@example.com
Hay 1 usuarios en la base de datos.
bash
bun run index.ts
txt
Created john-0.8671308799782803@example.com
Hay 2 usuarios en la base de datos.
bash
bun run index.ts
txt
Created john-0.4465968383115295@example.com
Hay 3 usuarios en la base de datos.

¡Eso es todo! Ahora que has configurado Prisma usando Bun, recomendamos consultar la documentación oficial de Prisma a medida que continúas desarrollando tu aplicación.

Bun por www.bunjs.com.cn editar