Configuración
Iskra usa c12 para cargar la configuracion y Zod para validarla.
Archivo de Configuracion
Sección titulada «Archivo de Configuracion»Crea un archivo app.config.ts en la raiz de tu proyecto:
export default { name: 'MiApp', debug: false, logger: { level: 'info' }, db: { driver: 'postgres', url: process.env.DATABASE_URL || 'postgres://localhost:5432/miapp', }, kv: { driver: 'redis', connection: { url: process.env.REDIS_URL || 'redis://localhost:6379' }, },};Variables de Entorno
Sección titulada «Variables de Entorno»Iskra carga automaticamente archivos .env gracias a c12. No lee archivos .apprc, y carga capas extends solo desde rutas locales: las fuentes remotas (github:, gitlab:, https://) se descargarian y ejecutarian en cada arranque.
Crea un .env en tu proyecto:
NODE_ENV=developmentPORT=3000DATABASE_URL=postgres://user:pass@localhost:5432/miappREDIS_URL=redis://localhost:6379Y usa las variables en tu config:
export default { web: { port: Number(process.env.PORT) || 3000 }, db: { driver: 'postgres', url: process.env.DATABASE_URL },};Validacion con Zod
Sección titulada «Validacion con Zod»Podes definir un schema para validar la config en runtime:
import { z } from 'zod';
export const AppConfigSchema = z.object({ web: z.object({ port: z.number().default(3000), cors: z.boolean().default(true), }), db: z.object({ driver: z.enum(['postgres', 'mysql', 'sqlite']), url: z.string(), }), cache: z.object({ adapter: z.enum(['memory', 'redis']).default('memory'), ttl: z.number().default(300), }).optional(),});
export type AppConfig = z.infer<typeof AppConfigSchema>;
// En tu main.tsconst rawConfig = await loadAppConfig();const config = AppConfigSchema.parse(rawConfig);Archivos .env.example
Sección titulada «Archivos .env.example»Cada template y paquete incluye un .env.example con las variables disponibles. Copia este archivo como .env para empezar:
cp .env.example .envAppConfig Completa
Sección titulada «AppConfig Completa»| Campo | Tipo | Descripcion |
|---|---|---|
name |
string |
Nombre de la aplicacion |
debug |
boolean |
Modo debug |
logger.level |
string |
Nivel de log (trace, debug, info, warn, error, fatal) |
db.driver |
string |
Driver de DB (postgres, mysql, sqlite, libsql) |
db.url |
string |
URL de conexion |
socket.enabled |
boolean |
Habilitar WebSocket |
socket.port |
number |
Puerto del WebSocket |
kv.driver |
string |
Driver de KV (memory, redis) |
kv.connection |
any |
Config de conexion del KV |
processes |
Record<string, ProcessConfig> |
Procesos externos |