====== LU16c - Bundling, Minify & Deploy ======
Bevor eine Vue.js-App veröffentlicht werden kann, muss sie **gebundelt** werden. Dieser Schritt optimiert alle Dateien für den Produktionseinsatz und erstellt einen ''dist''-Ordner, der auf einem Server bereitgestellt werden kann.
===== npm run build =====
Der Befehl ''npm run build'' startet den Vite-Build-Prozess.
npm run build
{{:de:modul:m291:learningunits:lu16:theorie:screenshot_2026-06-28_at_23.17.53.png?direct&900| Terminal-Output nach npm run build }}\\
//Platzhalter: Screenshot Terminal mit Build-Output – Dateigrössen, Chunk-Namen, Dauer//
Nach dem Build liegt ein neuer Ordner ''dist/'' im Projekt:
{{:de:modul:m291:learningunits:lu16:theorie:scap_20260628231953_1.png?direct&600| Inhalt des dist-Ordners }}\\
//Screenshot VS Code Explorer mit dist-Ordner: index.html, assets/-Unterordner mit .js und .css Dateien//
Dieser ''dist/''-Ordner enthält alles, was für den Betrieb der App nötig ist – kein Node.js, kein Vite, keine Vue-Komponenten.
===== Minification =====
**Minification** bedeutet: überflüssige Zeichen aus dem Code entfernen, ohne die Funktion zu verändern.
^ Vorher (Entwicklung) ^ Nachher (Production) ^
| Zeilenumbrüche, Einrückungen | Alles in einer Zeile |
| Lange Variablennamen | Kurze Namen (''a'', ''b'', ''fn'') |
| Kommentare | Entfernt |
{{:de:modul:m291:learningunits:lu16:theorie:scap_20260628232427_1.png?direct&1100 | Vergleich: lesbarer Code vs. minifizierter Code }}\\
//Zwei Code-Blöcke nebeneinander – links normal, rechts minifiziert//
**Ziel:** Kleinere Dateigrösse → kürzere Ladezeit für die Nutzerin / den Nutzer.
Vite minifiziert automatisch bei ''npm run build''. Sie müssen nichts zusätzlich konfigurieren.
===== Chunking & Tree Shaking =====
Vite teilt den JavaScript-Code automatisch in **mehrere kleine Dateien (Chunks)** auf, anstatt alles in eine grosse Datei zu schreiben.
**Chunking:** Der Browser lädt nur den Code, den er gerade braucht – nicht alles auf einmal.
**Tree Shaking:** Code, der im Projekt importiert aber nie verwendet wird, wird automatisch aus dem Build entfernt.
===== Deploy: Mit Git (Vercel, Netlify, Render) =====
Die meisten modernen Hosting-Plattformen verbinden sich mit einem GitHub-Repository und deployen automatisch, sobald neuer Code gepusht wird.
{{:de:modul:m291:learningunits:lu16:theorie:screenshot_2026-06-28_at_23.26.39.png?direct&1100 | Deploy-Workflow mit Git: Code → GitHub → Hoster → Live }}\\
//Development → Code push zu GitHub → Vercel/Netlify/Render → Preview → Production (Live)//
^ Anbieter ^ Kostenlos ^ Besonderheit ^
| [[https://vercel.com|Vercel]] | ✅ (Hobby-Plan) | Sehr schnell, optimiert für Vue/React/Next.js |
| [[https://netlify.com|Netlify]] | ✅ (Starter-Plan) | Netlify Drop für direktes Hochladen möglich |
| [[https://render.com|Render]] | ✅ (mit Einschränkungen) | Auch für Backend-Services geeignet |
**Voraussetzung:** Ein GitHub-Account und ein Repository mit dem Projektcode. Diese Plattformen eignen sich ideal für Teams, die mit Git arbeiten.
===== Deploy: Ohne Git (Surge.sh & Netlify Drop) =====
Für den Unterricht – ohne Git-Kenntnisse – gibt es zwei einfachere Wege:
{{:de:modul:m291:learningunits:lu16:theorie:scap_20260628233044_1.png?direct&1100| Deploy ohne Git: npm run build → dist → surge.sh → Live-URL }}\\
//Vue.js mit npm run build und surge.sh deployen//
==== Option A: Surge.sh (Terminal-Weg) ====
npm run build
cd dist
npx surge
Surge fragt beim ersten Start nach E-Mail und Passwort (kostenlose Registrierung direkt im Terminal). Anschliessend wählen Sie eine Domain:
domain: vorname-faq.surge.sh
{{:de:modul:m291:learningunits:lu16:theorie:scap_20260628121309_1.png?direct&900| Terminal mit surge-Befehl und erfolgreicher Ausgabe inkl. URL }}\\
//Screenshot Terminal – surge-Befehl, Registrierung, gewählte Domain, grüne Erfolgsanzeige//
✅ Die App ist live unter ''https://vorname-faq.surge.sh''
==== Option B: Netlify Drop (Drag-and-Drop) ====
- ''npm run build'' ausführen
- [[https://app.netlify.com/drop|app.netlify.com/drop]] im Browser öffnen
- Den ''dist/''-Ordner per Drag-and-Drop ins Browserfenster ziehen
- Fertig – Netlify erstellt sofort eine öffentliche URL
**Hinweis:** Ohne Konto ist die Netlify-Drop-URL nur ca. 1 Stunde aktiv. Mit kostenlosem Konto (keine Kreditkarte nötig) bleibt sie dauerhaft erreichbar.
===== Vergleich: Deploy-Optionen =====
^ ^ Surge.sh ^ Netlify Drop ^ Vercel / Netlify / Render ^
| **Git nötig?** | Nein | Nein | Ja |
| **Terminal nötig?** | Ja | Nein | Nein |
| **Aufwand** | Gering | Sehr gering | Mittel (Einrichtung) |
| **Geeignet für** | Unterricht, Demos | Unterricht, schnelle Tests | Echte Projekte |
| **Automatisches Re-Deploy** | Nein | Nein | Ja (bei Git-Push) |
| **Gratis** | ✅ | ✅ | ✅ (mit Limits) |
| **Eigene Domain** | Ja | Nein | Ja |
===== Zusammenfassung: Der komplette Ablauf =====
# 1. App für Production optimieren
npm run build
# 2. In den dist-Ordner wechseln
cd dist
# 3. Deployen mit Surge
npx surge
Nach diesen drei Befehlen ist die Vue.js-App unter einer echten, öffentlichen URL erreichbar.