#!/bin/bash # MYP Platform - Kiosk CSS Build Script # Optimiert und minifiziert CSS für maximale Performance im Offline-Kiosk-Modus echo "🚀 Starte Kiosk CSS Build..." # Erstelle Build-Verzeichnis mkdir -p static/css/build # Erstelle eine kombinierte CSS-Datei in korrekter Reihenfolge echo "📦 Kombiniere CSS-Dateien..." cat > static/css/build/kiosk-combined.css << 'EOF' /* MYP Platform - Kiosk Optimierte CSS Bundle */ /* Generiert am: $(date) */ EOF # CSS-Dateien in optimaler Reihenfolge kombinieren cat static/css/kiosk-optimized.css >> static/css/build/kiosk-combined.css echo "" >> static/css/build/kiosk-combined.css cat static/css/icons-minimal.css >> static/css/build/kiosk-combined.css # TailwindCSS mit aggressivem Purging bauen echo "🎯 Purge TailwindCSS..." npx tailwindcss -i static/css/input.css -o static/css/build/tailwind-purged.css --minify # Kombiniere mit Tailwind echo "" >> static/css/build/kiosk-combined.css cat static/css/build/tailwind-purged.css >> static/css/build/kiosk-combined.css # CSS minifizieren (falls cssnano verfügbar) if command -v npx &> /dev/null; then echo "🗜️ Minifiziere CSS..." npx cssnano static/css/build/kiosk-combined.css static/css/build/kiosk-production.css --no-map else echo "⚠️ cssnano nicht verfügbar, verwende unminifizierte Version" cp static/css/build/kiosk-combined.css static/css/build/kiosk-production.css fi # Erstelle kritisches CSS für Inline-Verwendung echo "⚡ Erstelle kritisches CSS..." cp static/css/critical-inline.css static/css/build/critical.css # Erstelle eine Version ohne FontAwesome echo "🚫 Entferne FontAwesome-Abhängigkeiten..." grep -v "fontawesome" static/css/build/kiosk-production.css > static/css/build/kiosk-no-fa.css # Dateigröße-Analyse echo "" echo "📊 Dateigröße-Analyse:" echo "Critical CSS (inline): $(wc -c < static/css/build/critical.css) bytes" echo "Kiosk Production CSS: $(wc -c < static/css/build/kiosk-production.css) bytes" echo "Ohne FontAwesome: $(wc -c < static/css/build/kiosk-no-fa.css) bytes" # Vergleich mit Original-Dateien if [ -f "static/css/tailwind.min.css" ]; then original_size=$(wc -c < static/css/tailwind.min.css) optimized_size=$(wc -c < static/css/build/kiosk-production.css) reduction=$((100 - (optimized_size * 100 / original_size))) echo "TailwindCSS Original: $original_size bytes" echo "Größenreduktion: $reduction%" fi # Cache-Busting Hash generieren hash=$(sha256sum static/css/build/kiosk-production.css | cut -d' ' -f1 | cut -c1-8) cp static/css/build/kiosk-production.css static/css/build/kiosk-$hash.css echo "" echo "✅ Build abgeschlossen!" echo "" echo "📁 Generierte Dateien:" echo " • static/css/build/critical.css (inline verwenden)" echo " • static/css/build/kiosk-production.css (Haupt-CSS)" echo " • static/css/build/kiosk-$hash.css (mit Cache-Busting)" echo "" echo "🔧 HTML-Integration:" echo ' ' echo ' ' echo "" echo "💡 Für maximale Performance: Service Worker entfernen und nur statische CSS verwenden" # Cleanup temporärer Dateien rm -f static/css/build/kiosk-combined.css rm -f static/css/build/tailwind-purged.css echo "🧹 Cleanup abgeschlossen"