Instalación
Requisitos previos
Sección titulada «Requisitos previos»- Node.js 18 o superior
- TypeScript 5.0 o superior (
strict: truerecomendado) - pnpm, npm o bun
Bootstrap con jsorm init
Sección titulada «Bootstrap con jsorm init»El punto de entrada recomendado para cualquier proyecto nuevo es el comando interactivo jsorm init. Se encarga de todo: selección de adaptador, instalación de paquetes, provisión del binario del motor y generación del archivo de configuración.
pnpm dlx jsorm@latest initnpx jsorm@latest initbunx jsorm@latest init-
Solicita la ruta de entrada del schema — por defecto
src/schema/index.ts -
Genera la estructura del schema con un modelo
Userde ejemplo:src/schema/main/user.tssrc/schema/index.ts -
Solicita el/los adaptador(es) — instala el paquete adaptador y su peer dependency
-
Provisiona el binario del motor Rust en
node_modules/.jsorm/engine, verifica checksum y permisos -
Escribe
jsorm.config.ts— connection sources y migration sources listos para editar -
Crea
.envcon un placeholder deDATABASE_URL(si no existe) -
Crea
.migrations/schema.json— snapshot vacío para generación de migraciones
jsorm.config.ts generado
Sección titulada «jsorm.config.ts generado»Después de init, el proyecto tiene un archivo de configuración central compartido por el runtime y el CLI:
// jsorm.config.tsimport { defineConnectionSource, defineJsormConfig } from 'jsorm';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', },});El singleton global jsorm carga este archivo automáticamente desde process.cwd() en el primer uso.
Paquetes
Sección titulada «Paquetes»| Paquete | Propósito | Peer dependency |
|---|---|---|
jsorm | ORM core, singleton runtime, config, migraciones, CLI | — |
jsorm-pg | Adaptador PostgreSQL | pg |
jsorm-mysql | Adaptador MySQL | mysql2 |
jsorm-sqlite | Adaptador SQLite | sqlite3 |
Solo instala los adaptadores que realmente uses.
Orden de resolución del binario
Sección titulada «Orden de resolución del binario»- Variable de entorno
JSORM_ENGINE_PATH node_modules/.jsorm/engine/jsorm-engine(.exeen Windows)- Instalaciones legacy
.jsorm/bin/jsorm-engine
Si el binario no existe o falla la verificación de integridad, jsorm lanza un error con mensaje accionable:
[JSORM ENGINE MISSING] Run: pnpx jsorm init[JSORM ENGINE INVALID] Integrity check failed[JSORM VERSION MISMATCH] Incompatible AST/Engine versionsNota sobre Edge runtimes
Sección titulada «Nota sobre Edge runtimes»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»- Usa siempre
pnpm dlx jsorm@latest initpara proyectos nuevos — asegura que el motor y la config queden correctamente conectados. - Mantén
DATABASE_URLy otras credenciales en.env, nunca commiteadas al repositorio. - Usa
strict: trueentsconfig.jsonpara aprovechar la inferencia de tipos completa. - Un
jsorm.config.tspor proyecto — usado tanto por el runtime como por el CLI.