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.

Este wrapper está pensado para funcionar standalone: por defecto NodeCG corre con el Node interno de Electron (no requiere Node instalado en la máquina final).

Qué hace

  • Arranca lib/nodecg/index.js como proceso hijo desde Electron.
  • Muestra una ventana de carga mientras NodeCG inicia.
  • Carga el dashboard del bundle en http://localhost:<puerto>/bundles/<bundle>/<ruta-dashboard>.
  • Empaqueta NodeCG + assets dentro de la app final con electron-builder.

Estructura esperada

scoreko-electron-dev/
├─ lib/
│  └─ nodecg/
│     ├─ index.js
│     ├─ node_modules/
│     └─ bundles/
│        └─ scoreko-dev/  # clonado/copiado desde tu repo scoreko-dev
├─ src/main/main.ts
├─ static/loading.html
└─ package.json

Preparación con tu repo scoreko-dev

  1. Copia o clona tu instalación de NodeCG en lib/nodecg.
  2. Copia tu bundle scoreko-dev a lib/nodecg/bundles/scoreko-dev.
  3. Instala dependencias de NodeCG dentro de lib/nodecg.
  4. Instala dependencias del wrapper:
npm install
cd lib/nodecg
npm install
cd ../..

Si no haces npm install dentro de lib/nodecg, verás errores como Cannot find module ... node_modules/nodecg/dist/server/bootstrap.js.

¿Existe Electron con Node 22 para standalone?

Sí. Este proyecto usa Electron 35.x, que permite mantener un runtime moderno y ejecutar NodeCG con el Node embebido de Electron para app standalone.

Error típico: NODE_MODULE_VERSION

Si ves un error como better-sqlite3 ... NODE_MODULE_VERSION, tienes módulos nativos compilados para una versión distinta de Node.

En ese caso recompila dentro de lib/nodecg con el runtime objetivo:

cd lib/nodecg
npm install
npm rebuild better-sqlite3 --update-binary

Si sigues en modo standalone (default), asegúrate de no mezclar binarios compilados con otro Node fuera de tu versión de Electron.

Runtime de NodeCG

Por defecto (standalone):

  • NODECG_USE_SYSTEM_NODE=false

Opcionalmente, puedes forzar Node del sistema:

  • NODECG_USE_SYSTEM_NODE=true
  • NODECG_NODE_BINARY=node

Ejemplo en PowerShell para usar Node del sistema (si lo necesitas):

$env:NODECG_USE_SYSTEM_NODE="true"
$env:NODECG_NODE_BINARY="C:\Program Files\nodejs\node.exe"
node -v
npm run dev

Variables de entorno opcionales

Estas variables se leen en src/main/main.ts.

  • NODECG_PORT (default: 9090)
  • NODECG_BUNDLE_NAME (default: scoreko-dev)
  • SCOREKO_DASHBOARD_ROUTE (default: dashboard/index.html)
  • ELECTRON_LOAD_DELAY_MS (default: 2500)
  • NODECG_STARTUP_TIMEOUT_MS (default: 30000)
  • NODECG_USE_SYSTEM_NODE (default: false)
  • NODECG_NODE_BINARY (default: node)

Scripts

  • npm run dev: modo desarrollo (watch + relanzado de Electron).
  • npm run start: build y ejecución local.
  • npm run build: compila TypeScript y copia assets.
  • npm run pack: genera app sin instalador.
  • npm run dist: genera instalador/plataformas configuradas.

Nota de seguridad

La ventana principal usa contextIsolation: true, sandbox: true y nodeIntegration: false. Los enlaces externos se abren en el navegador del sistema.

S
Description
No description provided
Readme 1.1 MiB
Languages
TypeScript 82.4%
JavaScript 11%
HTML 4.7%
NSIS 1.9%