Drizzle ORM
Configuración Multi Etapa¶
Cómo usar múltiples archivos de configuración en Drizzle¶
Por defecto, Drizzle usa un solo archivo de configuración (drizzle.config.ts o drizzle.config.js), pero puedes definir múltiples archivos y ejecutarlos según el contexto.
1. Crear múltiples archivos de configuración¶
Puedes crear distintos archivos en la raíz del proyecto o en una carpeta específica, por ejemplo:
/config
├── drizzle.config.dev.ts
├── drizzle.config.prod.ts
├── drizzle.config.test.ts
Cada archivo puede tener su propia configuración según el entorno:
Archivo drizzle.config.dev.ts (Entorno de desarrollo)¶
import { defineConfig } from "drizzle-kit";
export default defineConfig({
out: "./drizzle",
dialect: "postgresql",
schema: "./src/db/schema/*",
driver: "pglite",
dbCredentials: {
url: "./.env.development",
},
migrations: {
table: "__drizzle_migrations__",
schema: "public",
},
verbose: true, // Muestra más logs para depuración
});
Archivo drizzle.config.prod.ts (Entorno de producción)¶
import { defineConfig } from "drizzle-kit";
export default defineConfig({
out: "./drizzle",
dialect: "postgresql",
schema: "./src/db/schema/*",
driver: "pg",
dbCredentials: {
url: process.env.DATABASE_URL, // Usa variables de entorno en producción
},
migrations: {
table: "__drizzle_migrations__",
schema: "public",
},
strict: true, // Aplica reglas estrictas en producción
verbose: false, // Reduce logs en producción
});
Archivo drizzle.config.test.ts (Entorno de pruebas)¶
import { defineConfig } from "drizzle-kit";
export default defineConfig({
out: "./drizzle",
dialect: "postgresql",
schema: "./src/db/schema/*",
driver: "pglite",
dbCredentials: {
url: "./.env.test",
},
migrations: {
table: "__drizzle_migrations_test__",
schema: "public",
},
verbose: true,
});
2. Ejecutar Drizzle con un archivo de configuración específico¶
Para usar un archivo en particular, puedes pasarlo como argumento en la línea de comandos:
drizzle-kit generate --config=./config/drizzle.config.dev.ts
o en producción:
drizzle-kit generate --config=./config/drizzle.config.prod.ts
Si usas scripts en package.json, puedes definir comandos específicos:
"scripts": {
"drizzle:dev": "drizzle-kit generate --config=./config/drizzle.config.dev.ts",
"drizzle:prod": "drizzle-kit generate --config=./config/drizzle.config.prod.ts",
"drizzle:test": "drizzle-kit generate --config=./config/drizzle.config.test.ts"
}
Así, puedes ejecutarlos con:
npm run drizzle:dev
npm run drizzle:prod
npm run drizzle:test
¿Cuándo usar múltiples archivos de configuración?¶
- Diferentes entornos (desarrollo, producción, pruebas) → Puedes cambiar credenciales, el tipo de base de datos y la configuración según el entorno.
- Bases de datos separadas para pruebas → Puedes usar una base de datos temporal (
pgliteo una versión de PostgreSQL en memoria) en pruebas unitarias. - Control de logs y validaciones → En producción, puedes reducir logs y habilitar configuraciones más estrictas (
strict: true).
CLI de Drizzle¶
📌 Comandos de la CLI de Drizzle ORM¶
Drizzle ORM tiene una CLI (drizzle-kit) que te permite generar migraciones, sincronizar esquemas y ejecutar consultas en la base de datos. Aquí tienes una lista completa de los comandos más importantes con ejemplos.
1️⃣ Inicializar la configuración de Drizzle¶
Este comando crea el archivo drizzle.config.ts, donde se define la configuración de migraciones y conexión a la base de datos.
npx drizzle-kit init
✅ Este comando genera un archivo drizzle.config.ts con valores predeterminados.
2️⃣ Generar una migración a partir del esquema¶
Si realizas cambios en los modelos de Drizzle, necesitas generar una nueva migración con este comando:
npx drizzle-kit generate:pg
✅ Esto crea un archivo SQL dentro de la carpeta drizzle/migrations/.
📌 Si estás usando SQLite, usa generate:sqlite.
3️⃣ Aplicar las migraciones en la base de datos¶
Para sincronizar los cambios en la base de datos, usa:
npx drizzle-kit push:pg
✅ Este comando ejecuta las migraciones y crea las tablas en la base de datos.
📌 Si usas SQLite, el comando sería:
npx drizzle-kit push:sqlite
4️⃣ Obtener información de la base de datos (Introspección)¶
Si ya tienes una base de datos con tablas y quieres generar los modelos de Drizzle automáticamente, usa:
npx drizzle-kit introspect:pg
✅ Esto genera modelos de Drizzle basados en la estructura de la base de datos existente.
📌 Para SQLite:
npx drizzle-kit introspect:sqlite
5️⃣ Sincronizar el esquema sin usar migraciones¶
Si quieres actualizar la base de datos directamente desde el código sin pasar por migraciones, usa:
npx drizzle-kit sync:pg
✅ Esto hace que la base de datos coincida con tu código sin necesidad de usar archivos de migración.
📌 Para SQLite:
npx drizzle-kit sync:sqlite
6️⃣ Ver la ayuda y los comandos disponibles¶
Si olvidas algún comando, puedes ver la ayuda con:
npx drizzle-kit --help
✅ Esto muestra una lista de todos los comandos disponibles.
📌 Resumen de comandos¶
| Comando | Descripción |
|---|---|
npx drizzle-kit init |
Inicializa drizzle.config.ts. |
npx drizzle-kit generate:pg |
Genera una nueva migración SQL. |
npx drizzle-kit push:pg |
Aplica las migraciones en PostgreSQL. |
npx drizzle-kit introspect:pg |
Genera modelos desde la base de datos. |
npx drizzle-kit sync:pg |
Aplica cambios sin migraciones. |
npx drizzle-kit --help |
Muestra ayuda sobre los comandos. |