mirror of
https://github.com/Pandipipas/scoreko-electron-dev.git
synced 2026-06-06 05:32:06 +00:00
117 lines
3.3 KiB
Markdown
117 lines
3.3 KiB
Markdown
# 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.
|
|
|
|
Por defecto, el wrapper arranca NodeCG con **Node del sistema** (`node`), pensado para que uses Node 22 de forma consistente en todo el stack.
|
|
|
|
## 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
|
|
|
|
```text
|
|
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:
|
|
|
|
```bash
|
|
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`.
|
|
|
|
|
|
## Error típico: NODE_MODULE_VERSION (Node 22 vs Electron Node 20)
|
|
|
|
Si ves un error como `better-sqlite3 ... NODE_MODULE_VERSION`, tienes módulos nativos compilados para una versión distinta de Node.
|
|
|
|
1. Entra a `lib/nodecg`.
|
|
2. Reinstala/recompila dependencias nativas:
|
|
|
|
```bash
|
|
cd lib/nodecg
|
|
npm install
|
|
npm rebuild better-sqlite3 --update-binary
|
|
```
|
|
|
|
3. Si persiste, elimina `node_modules` del workspace que falla y vuelve a instalar.
|
|
|
|
|
|
## Runtime de NodeCG (Node 22 recomendado)
|
|
|
|
Por defecto:
|
|
- `NODECG_USE_SYSTEM_NODE=true`
|
|
- `NODECG_NODE_BINARY=node`
|
|
|
|
Así NodeCG se ejecuta con tu Node del sistema (recomendado: Node 22).
|
|
|
|
Ejemplo en PowerShell para forzar Node 22:
|
|
|
|
```powershell
|
|
$env:NODECG_USE_SYSTEM_NODE="true"
|
|
$env:NODECG_NODE_BINARY="C:\Program Files\nodejs\node.exe"
|
|
node -v # debería mostrar v22.x
|
|
npm run dev
|
|
```
|
|
|
|
Si quieres volver al Node interno de Electron:
|
|
|
|
```powershell
|
|
$env:NODECG_USE_SYSTEM_NODE="false"
|
|
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: `true`)
|
|
- `NODECG_NODE_BINARY` (default: `node`)
|
|
|
|
Ejemplo (PowerShell):
|
|
|
|
```powershell
|
|
$env:NODECG_PORT="9191"
|
|
$env:NODECG_BUNDLE_NAME="scoreko-dev"
|
|
npm run dev
|
|
```
|
|
|
|
## 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.
|