# scoreko-electron-dev Wrapper de Electron para empaquetar una instalación de NodeCG que incluya el bundle `scoreko-dev`, inspirado en `opeik/runback-electron` pero actualizado a Electron + TypeScript moderno. ## Requisitos clave - Electron fijado en `39.5.1`. - Script requerido para recompilar `better-sqlite3` contra Electron 39.5.1: ```json "rebuild:better-sqlite3:electron": "npm --prefix ../.. rebuild better-sqlite3 --runtime=electron --target=39.5.1 --dist-url=https://electronjs.org/headers" ``` ## Qué hace - Arranca `lib/nodecg/index.js` como proceso hijo desde Electron. - Muestra la ruta de dashboard de carga del bundle (`/bundles//dashboard/loading.html`) servida por NodeCG mientras inicia (no usa un archivo local del wrapper). - Carga el dashboard del bundle en `http://localhost:/bundles//`. - Empaqueta NodeCG + assets dentro de la app final con `electron-builder`. ## Estructura esperada ```text scoreko-electron-dev/ ├─ lib/ │ └─ nodecg/ │ ├─ index.js │ ├─ node_modules/ │ └─ bundles/ │ └─ scoreko-dev/ ├─ src/main/main.ts └─ package.json ``` ## Scripts - `npm run dev`: modo desarrollo. - `npm run build`: compila TypeScript y copia assets. - `npm run start`: build y ejecución local. - `npm run pack`: genera app sin instalador. - `npm run dist`: genera instalador. - `npm run rebuild:native`: rebuild nativo auxiliar en `lib/nodecg`. - `npm run rebuild:better-sqlite3:electron`: comando exigido para rebuild de `better-sqlite3`. ## Troubleshooting ### Error: `Cannot find module 'bindings'` Si aparece en `database-adapter-sqlite-legacy/node_modules/better-sqlite3/lib/database.js`, faltan dependencias del workspace sqlite legacy. Ejecuta: ```bash cd lib/nodecg/workspaces/database-adapter-sqlite-legacy npm install npm install bindings --no-save cd ../../../../ npm run rebuild:native ``` ### Error: `NODE_MODULE_VERSION` Recompila nativos contra Electron 39.5.1: ```bash npm run rebuild:native npm run rebuild:better-sqlite3:electron ``` ## Variables de entorno útiles - `NODECG_BUNDLE_NAME` (default: `scoreko-dev`) - `SCOREKO_DASHBOARD_ROUTE` (default: `dashboard/index.html`) - `SCOREKO_LOADING_ROUTE` (default: `dashboard/loading.html`)