--- name: client-build description: Load this skill after modifying TypeScript files under Client/ to compile and bundle the frontend. Runs tsc and rollup to produce the deployable JS bundle in NGINX_Server/html/static/. --- # Client Build Führt den TypeScript- und Rollup-Build für die Client-Seite aus. Wird benötigt, nachdem `.ts`-Dateien unter `Client/` geändert wurden, damit die kompilierten Bundles in `NGINX_Server/html/static/` aktualisiert werden. ## Build-Schritte 1. **TypeScript kompilieren** — kompiliert alle `.ts`-Dateien nach `Client/tsout/`: ```bash cd /usr/opt/pythonapp/Client && npx tsc ``` Bei Fehlern: Ausgabe lesen, Fehler beheben, erneut ausführen. 2. **Rollup bundle** — bündelt `tsout/index.js` zu den statischen JS-Dateien: ```bash cd /usr/opt/pythonapp/Client && npx rollup -c ``` `rollup -c` liest die Konfiguration aus `rollup.config.mjs`. Es fasst alle kompilierten `.js`-Dateien plus Mithril zu einem selbstausführenden Bundle (Format: iife) zusammen und schreibt zwei Dateien nach `NGINX_Server/html/static/`: - `kbp_crm_00.00.01.js` — unminifiziert (für Debug) - `kbp_crm_00.00.01.min.js` — minifiziert via terser (für Produktion) Die Dateinamen setzen sich aus `projectname` und `version` aus `config.ini` zusammen (wird in `rollup.config.mjs` via `inireader.mjs` gelesen). ## Beide Schritte in einem Aufruf ```bash cd /usr/opt/pythonapp/Client && npx tsc && npx rollup -c ``` ## Wann ausführen - Nach jeder Änderung an `.ts`-Dateien unter `Client/` (Modelle, Komponenten, Widgets, index.ts) - Vor einem Commit, der Client-Änderungen enthält, damit die deploybaren Bundles aktuell sind - Nicht nötig bei reinen Server-Änderungen (`App_Server/`) ## Fehlerbehandlung - **tsc-Fehler:** TypeScript-Compiler-Fehler müssen vor dem Rollup-Schritt behoben werden — Rollup kann nicht ohne erfolgreiche Kompilierung bündeln. - **rollup-Fehler:** Meist fehlende Imports oder Pfadprobleme. Die `rollup.config.mjs` erwartet `tsout/index.js` als Input — sicherstellen, dass tsc erfolgreich war.