Pixi.js: Kompatibilität mit Webpack

Erstellt am 28. Mai 2015  ·  16Kommentare  ·  Quelle: pixijs/pixi.js

var PIXI = require('pixi.js');

Der erste Versuch gab mir eine Reihe von Webpack-Fehlern:

ERROR in ./~/pixi.js/src/filters/ascii/AsciiFilter.js
Module not found: Error: Cannot resolve module 'fs' in /Users/michaeldelaney/Workspace/web_dev/gulp-starter/node_modules/pixi.js/src/filters/ascii
 @ ./~/pixi.js/src/filters/ascii/AsciiFilter.js 3:9-22

ERROR in ./~/pixi.js/src/filters/blur/BlurXFilter.js
Module not found: Error: Cannot resolve module 'fs' in /Users/michaeldelaney/Workspace/web_dev/gulp-starter/node_modules/pixi.js/src/filters/blur
 @ ./~/pixi.js/src/filters/blur/BlurXFilter.js 3:9-22

ERROR in ./~/pixi.js/src/filters/blur/BlurYFilter.js
Module not found: Error: Cannot resolve module 'fs' in /Users/michaeldelaney/Workspace/web_dev/gulp-starter/node_modules/pixi.js/src/filters/blur
 @ ./~/pixi.js/src/filters/blur/BlurYFilter.js 3:9-22

etc...

Also habe ich node: { fs: "empty" } in der Webpack-Konfiguration festgelegt und damit die oben genannten Fehler beseitigt.

Aber dann dieser Fehler:

ERROR in ./~/pixi.js/package.json
Module parse failed: /Users/michaeldelaney/Workspace/web_dev/gulp-starter/node_modules/pixi.js/package.json Line 2: Unexpected token :
You may need an appropriate loader to handle this file type.
| {
|   "name": "pixi.js",
|   "version": "3.0.6",
|   "description": "Pixi.js is a fast lightweight 2D library that works across all devices.",
 @ ./~/pixi.js/src/core/const.js 14:13-42

Also habe ich json-loader zur Konfiguration des Webpacks hinzugefügt.

module: {
  loaders: [{
    test: /\.json$/,
    loader: 'json-loader'
  }]
}

Erfolg. Wäre schön, wenn dies sofort funktionieren würde.

🤔 Question

Hilfreichster Kommentar

Webpack hat die Option, "vorgepackte" Bibliotheken zu laden, ohne sie zu analysieren (wie pixi.js). Fügen Sie einfach noParse zu Ihrem Modulabschnitt in der Webpack-Konfiguration hinzu.

module: { noParse: [ /.*(pixi\.js).*/ ], }

Dieses Snippet muss das Problem mit den internen Anforderungen lösen.

Alle 16 Kommentare

Wir verwenden browserify brfs transform:

https://github.com/GoodBoyDigital/pixi.js/blob/master/package.json#L57 -L61

Ich bin mir nicht sicher, wie Sie dieses Webpack kompatibel machen würden. Gibt es Artikel zum Webpack, in denen browserify-Transformationen ausgeführt werden?

@drkibitz @englercj Vielen Dank für den Hinweis, ich konnte mit Pixi + Webpack mit transform-loader + json-loader beginnen.

@fusepilot Hier ist die Webpack-Konfiguration, die ich verwende.

Ich konnte die Konfiguration von @mking bei Verwendung von Babel nicht zum https://gist.github.com/oal/898df82fa64e54dd16d0

Schließen, da dies beantwortet zu sein scheint.

Ich konnte ein Problem nicht lösen, bei dem pixi.js/src/core/const.js versucht, ../../package.json zu benötigen, und einen Fehler Cannot find module "../../package.json" ausgibt. Ich habe es mit beiden Möglichkeiten von @oal versucht. Dies geschieht jedoch nur, wenn ich das Neuladen von Hot-Modulen verwende. Beim Erstellen der Produktion funktioniert dies einwandfrei.

Am Ende habe ich die erstellte Version von pixi.js wie import PIXI from 'pixi.js/bin/pixi.js' . Und jetzt sehe ich eine Warnung, aber Hot Reload funktioniert:

[HMR] ./~/pixi.js/bin/pixi.js Critical dependencies: 34:477-484 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results. @ ./~/pixi.js/bin/pixi.js 34:477-484

Ich denke, Sie benötigen möglicherweise eine Art Plugin für das Webpack, damit .json geladen werden kann. Node / browserify unterstützen es nativ.

@englercj Es wird unterstützt, wenn json-loader konfiguriert ist. Ich bin kein Experte für Webpacks, aber dies könnte ein Problem sein, das durch Webpack-Hot-Middleware verursacht wird. Da das Bundle funktioniert, wird der Fehler nur im Dev-Modus angezeigt.

Hmm, komisch. Ja, tut mir leid, ich bin auch nicht damit vertraut: /

Webpack hat die Option, "vorgepackte" Bibliotheken zu laden, ohne sie zu analysieren (wie pixi.js). Fügen Sie einfach noParse zu Ihrem Modulabschnitt in der Webpack-Konfiguration hinzu.

module: { noParse: [ /.*(pixi\.js).*/ ], }

Dieses Snippet muss das Problem mit den internen Anforderungen lösen.

Dies ist das direkteste und einfachste Beispiel für die Konfiguration von Webpack mit PIXI, das ich gefunden habe.

https://gist.github.com/mjackson/ecd3914ebee934f4daf4

Dieses Wesentliche ist das einfachste Webpack + pixi.js Konfiguration:

https://gist.github.com/mjackson/ecd3914ebee934f4daf4

(mit tollen Kommentaren)

Der oben verlinkte Kern leidet an einem Fehler im Zusammenhang mit pixijs / pixi. js @ 5a53e38 - Die Versionsnummer von __VERSION__

webpack.config.js sollte diesen Loader enthalten:

{
  include: path.resolve(__dirname, 'node_modules/pixi.js'),
  loader: 'transform/cacheable?browserify-versionify'
}

@mjackson erwähnt hier, weil Kernkommentare anscheinend keine Benachrichtigungen senden 😞

Bin gerade auf dieses Problem gestoßen. Vielen Dank für die Lösung!

Hier ist eine funktionierende Konfiguration für Webpack / Typescript und PixiJS :-). https://gist.github.com/Nek-/b9775f7a88eb896db8afc37a89db3771

Dieser Thread wurde automatisch gesperrt, da nach dem Schließen keine Aktivität mehr stattgefunden hat. Bitte öffnen Sie eine neue Ausgabe für verwandte Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen