Zum Inhalt springen

Kompilierungsanleitung

In diesem Dokument wird erklärt, wie man VidPly aus dem Quellcode kompiliert.

VidPly Logo

Voraussetzungen

  • Node.js 24+ (für Build-Tools; siehe package.json#engines)
  • npm oder yarn

Installation

Installieren Sie die Abhängigkeiten:

 
npm install
 

Dadurch werden folgende Komponenten installiert:

  • esbuild - Schneller TypeScript-/JavaScript-Bundler
  • typescript - Strenge Typprüfung und .d.ts Ausgabe
  • clean-css - CSS-Minifier
  • vitest + @playwright/test - Unit- und End-to-End-Test-Runner

Build-Befehle

Alles erstellen

TypeScript-Bundles, Typdeklarationen und CSS erstellen:

 
npm run build
 

npm run build dist/-Verzeichnis wird nun zunächst bereinigt, um veraltete Dateien (z. B. alte Chunk-Namen) beim erneuten Erstellen zu vermeiden.

Dadurch werden erstellt:

  • dist/dev/vidply.esm.js - ES-Modul (Entwicklung)
  • dist/prod/vidply.esm.min.js - ES-Modul (Produktion, minimiert)
  • dist/legacy/vidply.js - IIFE-Bundle (Entwicklung)
  • dist/legacy/vidply.min.js - IIFE-Bundle (Produktionsumgebung, minimiert)
  • dist/types/index.d.ts - TypeScript-Deklarationen (Einstieg)
  • dist/types/**/*.d.ts - Modulbezogene Deklarationen
  • dist/vidply.css - Nicht minimierte Stile
  • dist/vidply.min.css - Minifizierte Stile

Nur JavaScript erstellen

TypeScript mit esbuild bündeln:

 
npm run build:js
 

Nur TypeScript-Deklarationen erstellen

Ausgabe .d.ts Dateien über tsc --emitDeclarationOnly:

 
npm run build:types
 

Typüberprüfung (keine Ausgabe)

 
npm run typecheck
 

Nur CSS erstellen

 
npm run build:css
 

Build-Verzeichnis bereinigen

 
npm run clean
 

Überwachungsmodus (Entwicklung)

Automatischer Neuaufbau bei Dateiänderungen:

 
npm run watch
 

Anschließend in einem anderen Terminal:

 
npm run dev
 

Dadurch wird ein lokaler Server unter http://localhost:3000 gestartet

Build-Ausgabe

JavaScript-Bundles

ESM-Format (dist/vidply.esm.js und .min.js)

  • modernes ES6-Modulformat
  • Verwendung mit import Anweisungen
  • Tree-Shake-fähig
  • Empfohlen für moderne Projekte
import Player from './dist/prod/vidply.esm.min.js';
 

IIFE-Format (dist/vidply.js und .min.js)

  • sofort aufgerufener Funktionsausdruck
  • Funktioniert mit <script> Tags
  • Erzeugt globale VidPly Variable
  • Für herkömmliche Webseiten
<script src="dist/legacy/vidply.min.js"></script>
<script>
  const player = new VidPly.Player('#video');
</script>
 

CSS-Dateien

dist/vidply.css

  • Unminifizierte, lesbare Stile
  • Enthält Kommentare
  • Gut geeignet für Entwicklung und Anpassung

dist/vidply.min.css

  • Minifiziert und optimiert
  • ~60 % kleiner als die unminifizierte Version
  • Verwendung in der Produktion

Verwendung der kompilierten Dateien

 
<link rel="stylesheet" href="dist/vidply.min.css" />

<video data-vidply src="video.mp4"></video>

<script type="module">
  import Player from './dist/prod/vidply.esm.min.js';
  // Player auto-initializes with data-vidply
</script>
 

Option 2: IIFE (herkömmlich)

 
<link rel="stylesheet" href="dist/vidply.min.css" />
<script src="dist/legacy/vidply.min.js"></script>

<video id="my-video" src="video.mp4"></video>

<script>
  const player = new VidPly.Player('#my-video', {
    controls: true,
    autoplay: false
  });
</script>
 

Dateigrößen

Ungefähre Produktionsgrößen nach der npm run build (minifiziert):

AusgabeUnkomprimiertGzip (typische Übertragung)
dist/prod/vidply.esm.min.js (ESM-Eintrag)~247 KB~55 KB
Alle dist/prod/*.js (Code-Split-Player)~542 KB~141 KB
dist/legacy/vidply.min.js (IIFE-Bundle)~509 KB~117 KB
dist/vidply.min.css~116 KB~17 KB

Hinweis: ESM-Nutzer laden zunächst das Einstiegsmodul; Renderer und ressourcenintensive Funktionen laden bei Bedarf zusätzliche Chunks nach.

Erläuterung der Build-Skripte

build/build.js

Haupt-TypeScript-Bündelungsskript (esbuild):

  • Bündelt alle src/**/*.ts Quelldateien
  • Erstellt ES-Modul- und IIFE-Formate
  • Erzeugt sowohl Entwicklungs- als auch Produktionsversionen
  • Fügt ein Lizenzbanner hinzu
  • Erstellt Source-Maps für die Fehlersuche

tsc (build:types)

Führt den TypeScript-Compiler im „Declaration-Only“-Modus aus, unter Verwendung von tsconfig.build.json:

  • Erzeugt .d.ts Dateien an dist/types/
  • Wird von IDEs, tsc Anwender und Bundler (vite, webpack, rollup) zur Bereitstellung von Typinformationen
  • Wird referenziert von package.json#types

build/build-css.js

CSS-Build-Skript:

  • Kopiert das nicht minimierte CSS in den Ordner „dist“
  • Minifiziert CSS für die Produktion
  • Liefert Komprimierungsstatistiken
  • Optimiert die Leistung

build/watch.js

Watch-Skript für die Entwicklung:

  • Überwacht „src/“ auf Änderungen
  • Führt beim Speichern einen automatischen Neuaufbau durch
  • Erstellt Entwicklungs-Builds mit Source-Maps
  • Schneller als ein vollständiger Produktions-Build

build/clean.js

Bereinigungsskript:

  • Entfernt das Verzeichnis „dist/“
  • Bereitet einen neuen Build vor

ship-to-mpc-vidply (TYPO3-Erweiterung)

Wenn der Player von der TYPO3-Erweiterung „mpc-vidply“ im Arbeitsbereich „mpcore“ verwendet wird:

 
npm run build
npm run ship:mpc-vidply
 

wird dies ausgeführt build/ship-to-mpc-vidply.js, wodurch mpcore/packages/mpc-vidply/Resources/Public/JavaScript/vidply/ durch dist/prod/*.js (keine Quellzuordnungen) und kopiert vidply.css / vidply.min.css. Bearbeiten Sie die mitgelieferten Dateien nicht mpc-vidply manuell – ändern Sie .libs/vidply und stellen Sie die Erweiterung erneut bereit. Streaming-Bibliotheken (hls.min.js, dash.all.min.js) werden in der Erweiterung separat als Vendor-Dateien bereitgestellt; siehe Dokumentation zur mpc-vidply-HLS-Implementierung.

Anpassen des Builds

Zielbrowser ändern

Bearbeiten build/build.js:

 
target: ['es2020', 'chrome90', 'firefox88', 'safari14'];
 

Quellkarten zur Produktionsumgebung hinzufügen

Bearbeiten build/build.js:

 
{
  name: 'ESM Bundle (Minified)',
  sourcemap: true,  // Enable source maps
  minify: true
}
 

Globalen Namen ändern

Bearbeiten build/build.js:

 
{
  format: 'iife',
  globalName: 'MyPlayer',  // Change from VidPly
}
 

CI/CD-Integration

Beispiel für GitHub Actions

 
name: Build

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '24'

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: dist
          path: dist/
 

Fehlerbehebung

Build schlägt fehl

Symptom: Der Build-Befehl schlägt mit Fehlern fehl

Lösungen:

 
# 1. Clear node_modules and reinstall
rm -rf node_modules package-lock.json
npm install
npm run build

# 2. Check Node.js version (requires 24+)
node --version

# 3. Try using npx directly
npx esbuild src/index.ts --bundle --outfile=dist/vidply.js
 

Fehler bei der Typüberprüfung:

Wenn npm run typecheck Fehler gemeldet werden, führen Sie Folgendes aus:

 
npx tsc --noEmit --pretty
 

um die vollständige TypeScript-Diagnose mit Quelltextkontext anzuzeigen.

Source Maps funktionieren nicht

Symptom: Minifizierter Code lässt sich in den Entwicklertools des Browsers nicht debuggen

Lösungen:

  1. Stellen Sie sicher, dass Source Maps in der Build-Konfiguration aktiviert sind (build/build.js)
  2. Überprüfen Sie, ob die Entwicklertools des Browsers so konfiguriert sind, dass sie Source Maps laden
  3. Überprüfen Sie, ob .map , ob die Dateien im dist/ Ordner
  4. Leeren Sie den Browser-Cache und laden Sie die Seite neu

Große Bundle-Größe

Symptom: Die Bundle-Größe ist größer als erwartet

Erklärung: Der Player enthält:

  • Vollständige Benutzeroberfläche mit allen Schaltflächen und Menüs (einschließlich Download, Puffer-Indikator)
  • Mehrere Renderer (HTML5, YouTube, Vimeo, SoundCloud, HLS, DASH)
  • i18n-System mit 5 integrierten Sprachen
  • Umfassende Barrierefreiheitsfunktionen (ARIA, Tastaturnavigation)
  • Transkript-, Wiedergabelisten- und Gebärdensprachfunktionen

Lösungen:

  • Die Größe der minimierten und gzippten Datei (~18 KB) ist bereits für den Produktiveinsatz optimiert
  • Moderne Browser speichern die Dateien nach dem ersten Laden im Cache
  • Erwägen Sie die Verwendung eines CDN für eine bessere Caching-Leistung über verschiedene Websites hinweg
  • Für benutzerdefinierte Builds ohne ungenutzte Funktionen ändern Sie src/index.ts vor dem Erstellen

Zugriff verweigert bei Build-Skripten

Symptom: EACCES oder Berechtigungsfehler

Lösungen:

 
# On Linux/macOS, ensure scripts have execute permission
chmod +x build/*.js

# Or run with node explicitly
node build/build.js
 

Der Überwachungsmodus erkennt keine Änderungen

Symptom: Dateien ändern sich, aber der Build wird nicht ausgelöst

Lösungen:

  1. Watch-Modus neu starten
  2. Überprüfen Sie, ob der Editor Dateien ordnungsgemäß speichert (manche Editoren verwenden atomare Schreibvorgänge)
  3. Erhöhen Sie die Zeitüberschreitung für die Dateiüberwachung in build/watch.js falls erforderlich

ESM-Importfehler im Browser

Symptom: Die Browserkonsole zeigt Fehler beim Importieren von Modulen an

Lösungen:

  1. Stellen Sie sicher, dass Sie einen lokalen Server verwenden (nicht file:// Protokoll)
  2. Überprüfen Sie, ob die Dateipfade korrekt sind und sich relativ zur HTML-Datei beziehen
  3. Überprüfen Sie, ob <script type="module"> , ob die Einstellung korrekt ist
  4. Überprüfen Sie, ob der Browser ES6-Module unterstützt (Chrome 61+, Firefox 60+, Safari 11+)

Entwicklungsablauf

  1. Nehmen Sie Änderungen an den Dateien in „src/“ vor
  2. Watch-Modus starten: npm run watch
  3. Im Browser testen: npm run dev
  4. Demo anzeigen: http://localhost:3000/demo/
  5. Produktionsversion erstellen: npm run build

Bereitstellung

Für die Produktionsbereitstellung nur Folgendes einbinden:

  • dist/prod/vidply.esm.min.js oder dist/legacy/vidply.min.js
  • dist/vidply.min.css

Dies sind die einzigen Dateien, die Benutzer benötigen.

Lizenz

Die erstellten Dateien enthalten automatisch einen Lizenzhinweis.

Support

Bei Problemen mit dem Build überprüfen Sie bitte:

  1. Node.js-Version (24+)
  2. npm-Installation erfolgreich abgeschlossen
  3. Keine Syntaxfehler in den Quelldateien
  4. Die Build-Skripte verfügen über Ausführungsrechte

Viel Erfolg beim Kompilieren!

Seite teilen