2015-03-27 566 views
16

Webpack enthält standardmäßig AMDPlugin. Wenn ein Modul vor CommonJS nach AMD sucht, wird diese Moduldefinition verwendet.Gibt es eine Möglichkeit, AMDPlugin zu deaktivieren?

if (typeof define === 'function' && define.amd) { 
    define([], factory) 
} else if (typeof exports === 'object') { 
    exports.foo = factory(); 
} 

Ich möchte AMD insgesamt ignorieren. Gibt es eine Möglichkeit, dies im Webpack zu tun?

+1

Die Lösung: 'Modul: { Lader: [ {Test: /\.js/, loader: 'Importe definieren => false'} ] }' –

+1

Manchmal nur die AMD Definitionen fehlen einige Verzeichnisstrukturen. In diesem Fall können Sie den fehlenden Pfad zu "resolve: {fallback: [...]}" hinzufügen und vom Webpack lösen lassen. Kein zusätzlicher Lader benötigt. – Rockallite

+0

@WiktorKozlik bitte, fügen Sie Ihre Lösung als eine tatsächliche Lösung, so dass es einfacher ist, es zu sehen. –

Antwort

15

Es kann mit imports-loader

Es gibt viele Module, die vor der Verwendung Commonjs für eine Funktion definieren, überprüfen gelöst werden. Da Webpack beides kann, wird in diesem Fall standardmäßig AMD verwendet, was ein Problem darstellen kann, wenn die Implementierung skurril ist. Dann können Sie bequem die AMD Pfad deaktivieren, indem

imports?define=>false

einfach tun

require('imports?define=>false!myjsfile.js') 

OR ein besserer Ansatz ist in webpack.config.js Schreiben eines Laders Sie hinzufügen

loaders: [ { test: /myjsfile.js/, loader: 'imports?define=>false'} ] 
+0

Wie geht das, wenn Sie mehrere Dateien haben (vier um genau zu sein) und einer von ihnen vor den anderen 3 geladen werden muss, weil sie davon abhängen – codepreneur

+0

@codepreneur einfach erfordern sie in der richtigen Reihenfolge. require ('imports? Define => false! Datei1.js'); require ('imports? Define => false! Datei2.js'); require ('imports? Define => false! File3.js'); – kucherenkovova

+0

Ich tat, und es hat nicht funktioniert: http://StackOverflow.com/Questions/41488225/How-to-disable-amd-on-4-files-and-load-them-in-order-with-webpack? noredirect = 1 # Kommentar70182681_41488225 – codepreneur

0

Sehen Sie sich auch script-loader, wie am Ende der Shimming documentation erwähnt:

Der Skript-loader Code im globalen Kontext, ähnlich wie Aufnahme über ein Script-Tags auswertet. In diesem Modus sollte jede normale Bibliothek funktionieren. erfordern, Modul usw. sind nicht definiert.

Verwandte Themen