Mit Webpack, drei Beispielen und Typoskript?

8

Ich habe viel Mühe, Sachen in dreijs Beispielen (wie EffectComposer oder Detector) zu bekommen, um mit Webpack und Typoskript zu arbeiten.

Zunächst sind die relevanten *.d.ts -Dateien alle vorhanden und werden über tsd installiert. Mein Problem ist es, dass webpack Dateien außerhalb des Standard Builds von threejs enthält (nämlich Dinge in examples/js/ ).

Wenn three von npm installiert ist, kann ich etwas wie

tun %Vor%

Was gut funktioniert, aber keine der oben genannten Leckereien hat. Es gibt ein paar andere Threejs-Pakete auf npm, die Plugins bündeln, aber ich denke nicht, dass sie mit Typescript arbeiten (da require('three-js')(['EffectComposer']) vom Typescript-Compiler abgelehnt wird.

Hat jemand etwas in diesem Paket (wie Postprocessing) bekommen, um mit Typoskript zu arbeiten?

    
Ryan N 13.03.2016, 08:12
quelle

4 Antworten

6

Hier ist, was für mich funktioniert hat.

%Vor%

Um etwas aus three/examples/js zu verwenden, mache ich folgendes:

%Vor%

Ich denke, es ist richtig, die imports und exports loaders zu verwenden config statt sie in das require einzubetten. Ich werde diese Antwort aktualisieren, wenn ich ein Beispiel habe.

    
Dan Weaver 31.03.2016, 05:09
quelle
4

Ich habe es geschafft, einen ziemlich sauberen Weg zu finden, dies in webpack.config.js einzurichten.

Laut Dans Antwort:

$ npm install --save-dev imports-loader

Es stellt sich heraus, dass wir exports-loader nicht wirklich benötigen, da die Beispiele von three.js ihre Konstruktoren dem Objekt THREE hinzufügen.

Dann können wir in webpack.config.js eine Regel hinzufügen, die var THREE = require('three'); zu einem importierten Modul hinzufügt, wenn der Pfad des Moduls in eine Datei aufgelöst wird, die three/examples/js enthält:

%Vor%

Nun werden die Beispielmodule die THREE global finden, wenn sie es erwarten.

Um das Importieren von Beispielen etwas weniger ausführlich zu machen:

%Vor%

Dies setzt voraus, dass sich webpack.config.js im selben Verzeichnis wie node_modules befindet, passen Sie entsprechend an.

Nun können wir die Beispieldateien wie folgt verwenden:

%Vor%

um das Modul für seine Nebenwirkungen zu importieren.

    
Chris Williamson 07.07.2017 00:40
quelle
1

Ich werde versuchen, nur den Teil Ihrer Frage zu beantworten, der die Integration von TypScript und ThreeJS in Ihre IDE betrifft.

Wie Sie gesehen haben, werden die meisten Komponenten in den DefinitelyTyped-Archiven gehostet. Ich empfehle, tsd zu verwenden und zu typing zu migrieren.

Eine grundlegende typings.json , die typing verbrauchen wird, ist unten aufgeführt. Es erhält die neueste Haupt-ThreeJS- und die Effekt-Composer-Bibliothek, die von TypeScript erkannt werden. Beachten Sie, dass sich die Commit-Hashtags mit der Entwicklung von .tsd ändern.

%Vor%

Attached ist eine Momentaufnahme einer IDE, die die öffentlichen Methoden des EffectsComposer erkennt. Vielleicht möchten Sie auch mit verschiedenen Modulladefunktionen von TypeScript experimentieren.

    
blacknugget 13.03.2016 18:57
quelle
0

Ich konnte OrbitControls mit (webpack v2 + ts-loader) und keinen anderen Ladeprogrammen kombinieren.

package.json:

%Vor%

entrepoint.ts:

%Vor%

HINWEIS: webpack kann wie "export 'OrbitControls' (imported as 'THREE') was not found in 'three' warnen, weil OrbitControls.js kein richtiges JS-Modul ist. Ich nehme an, wir können diese Warnung einfach ignorieren.

    
Jokester 21.06.2017 15:23
quelle

Tags und Links