
Voraussetzungen
- Node.js 18+ (für Build-Tools)
- npm oder yarn
Installation
Installieren Sie die Abhängigkeiten:
npm install
Dadurch wird Folgendes installiert:
esbuild- Schneller TypeScript-/JavaScript-Bundlertypescript- Strenge Typprüfung und.d.tsAusgabeclean-css- CSS-Minifiervitest+@playwright/test- Unit- und End-to-End-Testrunner
Build-Befehle
Alles erstellen
TypeScript-Bundles, Typdeklarationen und CSS erstellen:
npm run build
npm run build bereinigt nun zunächst „dist/“, um veraltete Dateien (z. B. alte Chunk-Namen) beim Neuaufbau zu vermeiden.
Dies erzeugt:
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 (Produktion, minimiert)dist/types/index.d.ts- TypeScript-Deklarationen (Einstieg)dist/types/**/*.d.ts- Modulbezogene Deklarationendist/vidply.css- Nicht minimierte Stiledist/vidply.min.css- Minimierte Stile
Nur JavaScript erstellen
TypeScript mit esbuild bündeln:
npm run build:js
Nur TypeScript-Deklarationen erstellen
Dateien .d.ts Dateien über tsc --emitDeclarationOnly:
npm run build:types
Typprü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
Dann 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
importAnweisungen - 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
VidPlyVariable - 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
- Minimiert und optimiert
- ~60 % kleiner als die unminifizierte Version
- Verwendung in der Produktion
Verwendung von kompilierten Dateien
Option 1: ES-Modul (empfohlen)
<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 (traditionell)
<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 Größen (minifiziert + gzip):
| Datei | Unkomprimiert | Gzip |
|---|---|---|
| vidply.esm.min.js | ~50 KB | ~15 KB |
| vidply.min.js | ~52 KB | ~16 KB |
| vidply.min.css | ~12 KB | ~3 KB |
| Gesamt | ~62 KB | ~18 KB |
Hinweis: Die tatsächlichen Dateigrößen können je nach Version und enthaltenen Funktionen variieren. Dies sind ungefähre Werte für die Produktionsversionen.
Erläuterung der Build-Skripte
build/build.js
Haupt-TypeScript-Bundling-Skript (esbuild):
- Bündelt alle
src/**/*.tsQuelldateien - Erstellt ES-Modul- und IIFE-Formate
- Erzeugt sowohl Entwicklungs- als auch Produktionsversionen
- Fügt Lizenzbanner hinzu
- Erstellt Quellzuordnungen für die Fehlersuche
tsc (build:types)
Führt den TypeScript-Compiler im reinen Deklarationsmodus aus unter Verwendung von tsconfig.build.json:
- Gibt
.d.tsDateien andist/types/ - Verwendet von IDEs,
tscAnwendern und Bundlern (vite, webpack, rollup) für Typinformationen - Referenziert von
package.json#types
build/build-css.js
CSS-Build-Skript:
- Kopiert unminifiziertes CSS nach dist
- Minifiziert CSS für die Produktion
- Meldet Komprimierungsstatistiken
- Optimiert die Leistung
build/watch.js
Entwicklungs-Watch-Skript:
- Überwacht src/ auf Änderungen
- Erstellt beim Speichern automatisch einen neuen Build
- Erstellt Entwicklungs-Builds mit Source Maps
- Schneller als der vollständige Produktions-Build
build/clean.js
Bereinigungsskript:
- Entfernt das Verzeichnis „dist/“
- Bereitet einen neuen Build vor
Anpassen des Builds
Zielbrowser ändern
Bearbeiten build/build.js:
target: ['es2020', 'chrome90', 'firefox88', 'safari14']
Quellkarten zur Produktion 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: '18'
- 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 18+)
node --version
# 3. Try using npx directly
npx esbuild src/index.ts --bundle --outfile=dist/vidply.js
Fehler bei der Typprüfung:
Wenn npm run typecheck Fehler meldet, führen Sie Folgendes aus:
npx tsc --noEmit --pretty
um die vollständige TypeScript-Diagnose mit Quellkontext anzuzeigen.
Quellzuordnungen funktionieren nicht
Symptom: Minifizierter Code kann in den Entwicklertools des Browsers nicht debuggt werden
Lösungen:
- Stellen Sie sicher, dass Source Maps in der Build-Konfiguration aktiviert sind (
build/build.js) - Überprüfen Sie, ob die Entwicklertools des Browsers so konfiguriert sind, dass sie Source Maps laden
- Überprüfen Sie, ob
.map, ob die Dateien imdist/Ordner - Leeren Sie den Browser-Cache und laden Sie die Seite neu
Große Bundle-Größe
Symptom: Die Paketgröße ist größer als erwartet
Erklärung: Der Player enthält:
- Vollständige UI-Steuerelemente mit allen Schaltflächen und Menüs (einschließlich Download, Puffer-Spinner)
- 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 minifizierte + gzip-Größe (~18 KB) ist bereits für die Produktion optimiert
- Moderne Browser speichern die Dateien nach dem ersten Laden im Cache
- Erwägen Sie die Verwendung eines CDN für eine bessere Zwischenspeicherung über verschiedene Websites hinweg
- Für benutzerdefinierte Builds ohne ungenutzte Funktionen ändern Sie
src/index.tsvor 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:
- Watch-Modus neu starten
- Überprüfen Sie, ob der Editor Dateien ordnungsgemäß speichert (einige Editoren verwenden atomare Schreibvorgänge)
- Erhöhen Sie die Zeitüberschreitung für die Dateibewachung in
build/watch.js, falls erforderlich
ESM-Importfehler im Browser
Symptom: Die Browserkonsole zeigt Fehler beim Importieren von Modulen an
Lösungen:
- Stellen Sie sicher, dass Sie einen lokalen Server verwenden (nicht
file://Protokoll) - Überprüfen Sie, ob die Dateipfade korrekt sind und sich relativ zur HTML-Datei beziehen
- Überprüfen Sie,
<script type="module">, ob - Überprüfen Sie, ob der Browser ES6-Module unterstützt (Chrome 61+, Firefox 60+, Safari 11+)
Entwicklungsablauf
- Änderungen an den src/Dateien vornehmen
- Watch-Modus starten:
npm run watch - Im Browser testen:
npm run dev - Demo anzeigen: http://localhost:3000/demo/
- Produktionsversion erstellen:
npm run build
Bereitstellung
Für die Produktionsbereitstellung nur Folgendes einbinden:
dist/prod/vidply.esm.min.jsoderdist/legacy/vidply.min.jsdist/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:
- Node.js-Version (18+)
- npm-Installation erfolgreich abgeschlossen
- Keine Syntaxfehler in den Quelldateien
- Build-Skripte verfügen über Ausführungsrechte
Viel Erfolg beim Erstellen!