Instalación
Requisitos previos
Sección titulada «Requisitos previos»- Node.js 24 o superior para CLI, migraciones y adaptadores nativos
- TypeScript 5.0 o superior (
strict: truerecomendado) - pnpm, npm o bun
Elige tu set de paquetes
Sección titulada «Elige tu set de paquetes»Empieza con la combinación de paquetes que coincide con el entorno donde corre tu código:
pnpm add @jsorm/core @jsorm/node @jsorm/pg pgpnpm add @jsorm/core @jsorm/node @jsorm/mysql mysql2pnpm add @jsorm/core @jsorm/node @jsorm/sqlite sqlite3bun install @jsorm/core @jsorm/node @jsorm/pg pgbun install @jsorm/core @jsorm/node @jsorm/sqlitepnpm add @jsorm/runtime @jsorm/fetchpnpm add -D @jsorm/node @jsorm/pg pgPara apps edge, @jsorm/runtime + @jsorm/fetch se encarga de las queries en tiempo de request, mientras @jsorm/core (CLI) más @jsorm/node y un adaptador nativo queda en CI/release jobs para jsorm deploy, migraciones y demás tareas CLI.
Bootstrap de config con jsorm init
Sección titulada «Bootstrap de config con jsorm init»Después de instalar @jsorm/core, ejecuta el CLI para generar config y helpers del proyecto:
pnpm exec jsorm init# o, para ejecutar sin instalación local:pnpm dlx @jsorm/core init-
Detección de ruta de schema — solo pregunta si
src/schema/no existe (por defectosrc/schema/index.ts) -
Generación de archivos de schema — crea
src/schema/index.tsy un modeloUserde ejemplo ensrc/schema/main/user.ts(solo si no existen) -
Setup de bases/adaptadores — recorre en bucle para recolectar una o más conexiones (nombre + dialecto). Si
jsorm.config.tsya existe, las connection sources existentes se preservan y solo se preguntan las faltantes. -
Escribe
jsorm.config.ts— connection sources y config de runtime inline, listos para editar -
Genera helpers runtime (
db.tspor defecto,jsormdb.tsfallback si aplica) para el camino Node -
Crea
.envcon un placeholder deDATABASE_URL(si no existe) -
Crea
.migrations/schema.json— snapshot vacío para generación de migraciones -
Verifica bootstrap + readiness de workers antes de reportar éxito
Usa --no-migrations para omitir la scaffolding de migraciones por completo (sin directorio .migrations/, sin bloque migrations en config).
jsorm.config.ts generado
Sección titulada «jsorm.config.ts generado»Después de init, el proyecto tiene un archivo de configuración central que pueden compartir el runtime y el CLI en flujos Node:
// jsorm.config.tsimport { defineConnectionSource, defineJsormConfig } from '@jsorm/core';import { pgAdapter } from '@jsorm/pg';
const main = defineConnectionSource({ adapter: pgAdapter({ name: 'main', connectionString: process.env.DATABASE_URL!, pool: { min: 2, max: 10 }, }),});
export default defineJsormConfig({ connectionSources: { main }, defaults: { connectionSource: 'main', },});Las instancias runtime en Node pueden resolver este archivo durante createJsorm().init(). En apps edge o fetch-only, define la misma forma con @jsorm/runtime y pásala explícitamente.
Paquetes
Sección titulada «Paquetes»| Paquete | Propósito | Peer dependency |
|---|---|---|
@jsorm/core | Paquete de authoring/runtime para Node con modelos, queries, config y primitivas de migración | — |
@jsorm/runtime | Paquete runtime-safe para código de aplicación edge o fetch-only | — |
@jsorm/node | Runtime para Node y Bun (en Bun, usa APIs nativas de Bun, sin motor Rust) | — |
@jsorm/fetch | Transporte HTTP/fetch para acceso edge runtime-safe | — |
@jsorm/pg | Adaptador nativo PostgreSQL | pg |
@jsorm/mysql | Adaptador nativo MySQL | mysql2 |
@jsorm/sqlite | Adaptador nativo SQLite | sqlite3 |
Instala solo los paquetes de runtime y adaptadores que realmente uses.
Recordatorio sobre límites de runtime
Sección titulada «Recordatorio sobre límites de runtime»Configuración TypeScript
Sección titulada «Configuración TypeScript»Asegúrate de que tu tsconfig.json incluya:
{ "compilerOptions": { "strict": true, "target": "ES2020", "module": "NodeNext", "moduleResolution": "NodeNext" }}Buenas prácticas
Sección titulada «Buenas prácticas»- Instala primero el set de paquetes que corresponde a tu runtime y luego ejecuta
pnpm exec jsorm initdesde un proyecto que tenga@jsorm/core. - Mantén
DATABASE_URLy otras credenciales en.env, nunca commiteadas al repositorio. - Usa
strict: trueentsconfig.jsonpara aprovechar la inferencia de tipos completa. - Mantén un
jsorm.config.tspor owner de deploy y separa los imports edge de la propiedad Node del CLI.