Schreiben von JavaScript-Bibliotheken
Dieses kurze Tutorial führt Dich durch den Prozess der Erstellung und Weitergabe einer Komponentenbibliothek für Wonderland Engine.
Installiere npm
npm ist der offizielle Paketmanager für das JavaScript-Ökosystem.
Es ist jetzt Teil der Wonderland Engine-Toolchain, um Entwicklern die Nutzung externer Abhängigkeiten nahtlos zu ermöglichen. Als Bibliothek-Entwickler benötigst Du npm, um Deine Bibliotheken zu verwalten und zu veröffentlichen.
Du kannst nodejs herunterladen, das eine gepackte npm-Installation enthält.
Erstelle die Bibliothek
Für dieses Tutorial erstellen wir eine Bibliothek in einem Ordner namens my-library. Wechsle in das Verzeichnis des Ordners my-library und führe folgendes aus:
npm init Einige Eingabeaufforderungen erscheinen, die Dich nach Informationen zu Deinem Paket fragen:
package name: (my-library)
version: (1.0.0) Nachdem Du die Eingaben ausgefüllt hast, siehst Du eine package.json Datei, die folgendermaßen aussieht:
{
"name": "my-library",
"version": "1.0.0",
"description": "Meine erste Wonderland Engine Bibliothek!",
"main": "index.js"
} Die package.json Datei enthält alle notwendigen Informationen über die Bibliothek. Wenn ein Entwickler Deine Bibliothek installiert, findet npm die benötigten Daten in dieser Datei.
‘wonderlandengine’ Tag
Der Wonderland Editor registriert automatisch Bibliotheken basierend auf einem bestimmten Metatag: wonderlandengine.
Wenn Du eine Bibliothek für die Verwendung mit der Wonderland Engine erstellst, musst Du folgende Zeile zu Deiner package.json hinzufügen, z.B. oberhalb von "main": "index.js":
"wonderlandengine": {}, Für jetzt ist dies alles, was der Editor benötigt, um die Bibliothek automatisch zu erkennen.
In Zukunft könnte das wonderlandengine Metadatenobjekt es ermöglichen, weitere Eigenschaften für Wonderland Engine zu spezifizieren.
Einstiegspunkt
Einer der wichtigsten Teile ist das index.js Feld. Es gibt die Datei an, die die Objekte Deiner Bibliothek exportieren soll. Wenn ein Entwickler Deine Bibliothek nutzt und sie importiert:
import {ComponentA, ComponentB} from 'my-library'; Wird 'my-library' aufgelöst zu:
node_modules/my-library/index.js Der Einstiegspunkt muss daher die öffentliche Schnittstelle (Klassen, Funktionen etc.) Deiner Bibliothek exportieren:
index.js
// Re-export Komponente aus anderen Dateien
export {ComponentA} from './component-a.js';
export {ComponentB} from './component-b.js';
export {someUtilityFunction} from './someUtilityFunction.js'; Wenn das wonderlandengine Metatag in einer package.json gefunden wird, wird der Einstiegspunkt genutzt, um alle exportierten Komponenten zu finden (ComponentA und ComponentB im obigen Beispiel):
Abhängigkeiten
In diesem Tutorial erstellen wir eine Komponente, die die öffentliche API der Wonderland Engine nutzt.
Wir fügen sie als Abhängigkeit in der package.json hinzu. Unterhalb von "dependencies" fügen wir einen neuen Abschnitt "peerDependencies" hinzu:
"dependencies": {
},
"peerDependencies": {
"@wonderlandengine/api": "^1.0.0"
} Das ist wichtig, da wir den Benutzern ermöglichen möchten, eine Bandbreite von API-Versionen mit einer Bibliothek zu verwenden, normalerweise bis zur nächsten größeren Release-Version.
Um die API nutzen zu können, musst Du als Nächstes npm install ausführen, um Änderungen in Deiner package.json anzuwenden:
npm install Inhalt hinzufügen
Für dieses Tutorial erstellen wir eine einfache Komponente, die ihr Objekt mit einer bestimmten Geschwindigkeit vorwärts bewegt.
Erstelle eine neue Datei namens move-forward.js in Deinem Bibliotheksordner mit folgendem Inhalt:
move-forward.js
import {Component, Property} from '@wonderlandengine/api';
const tempVec = new Float32Array(3);
export class MoveForward extends Component {
static TypeName = 'move-forward';
static Properties = {
speed: Property.float(1.5),
};
update(dt) {
this.object.getForward(tempVec);
tempVec[0] *= this.speed;
tempVec[1] *= this.speed;
tempVec[2] *= this.speed;
this.object.translate(tempVec);
}
} Wir müssen diese Komponente auch an die Entwickler, die unser Paket nutzen, re-exportieren. Wir können die index.js Datei mit diesem Inhalt aktualisieren:
index.js
export {MoveForward} from './move-forward.js'; Für dieses Beispiel hätten wir die Komponente direkt in index.js platzieren können. Allerdings, je mehr Deine Bibliothek wächst, desto mehr Kontrolle wirst Du über Deine Exporte haben wollen.
Testen & Debuggen
Das Testen kann erfolgen, indem man ein Wonderland Engine Projekt erstellt und Deine Bibliothek über einen lokalen Pfad installiert.
Für dieses Tutorial nehmen wir an, dass ein Wonderland Engine Projekt mit dem Namen MyWonderland erstellt wurde.
Im Projekt-Root kannst Du folgendes ausführen:
npm install path/to/my-library Du musst path/to/my-library durch einen Pfad ersetzen, der auf das Root des Bibliotheksordners zeigt.
Das war’s! Du solltest jetzt auf die MoveForward Komponente in Deinem Projekt zugreifen können.
In diesem Fall ist die Bibliothek lokal installiert. Andere Entwickler haben keinen Zugriff auf die Bibliothek. Du musst entweder:
- Die Bibliothek veröffentlichen (wie im Abschnitt Bibliothek veröffentlichen beschrieben)
- Oder ein lokales Paket bereitstellen (z.B. als .tar.gz), das sie installieren können
Bibliothek veröffentlichen
Indem Du die Bibliothek als Paket im npm-Paketrepository veröffentlichst, markierst Du eine bestimmte Version des Codes mit einer Versionsnummer und lädst das Paket auf die npm-Server zum Download durch andere Entwickler hoch.
Anmeldung
Um Deine Bibliothek auf npm zu veröffentlichen, musst Du:
Veröffentlichen
Wenn Du angemeldet bist, kannst Du Dein Paket veröffentlichen, indem Du in den Bibliotheksordner mit einem Terminal navigierst und folgendes ausführst:
npm run publish Du kannst auch eine “trockene” Veröffentlichung mit folgendem Befehl durchführen:
npm run publish --dry-run Dieser Befehl wird Informationen über die zu veröffentlichenden Dateien ausgeben und ermöglicht es, zu überprüfen, dass Du keine unerwünschten Dateien veröffentlichst.
Installation
Mit erfolgreich veröffentlichter Bibliothek kannst Du sie in Deinem Projekt installieren, indem Du folgendes ausführst:
npm install --save my-library Jetzt bist Du bereit, die wunderbarsten Bibliotheken zu erstellen.
Indem Du Bibliotheken erstellst, unterstützt Du die Community dabei, großartige WebXR Inhalte für alle zu entwickeln.