2015-05-19 4 views
33

Ich habe eine isomorphe React-Anwendung, die über Webpack gebündelt ist.Webpack optimieren mit UglifyJS Plugin verursacht Laufzeitfehler

Ich habe 2 Eingangspunkte, die 2 gebündelten Dateiausgaben entsprechen: vendors.js und app.js.

Wenn Sie den webpack-dev-server ausführen oder wenn Sie ohne Optimierungsflags kompilieren, funktioniert alles einwandfrei. Sobald ich jedoch versuche, das Plugin Uglify zu verwenden, enthält die kompilierte Ausgabe Fehler.

Ich habe versucht:

webpack -p
webpack -optimize-minimize

oder in der config:

new webpack.optimize.UglifyJsPlugin({sourceMap:false})

Aber alle Ergebnis in der gleichen Laufzeitfehler (nicht definierte Variablen).

Gibt es etwas Offensichtliches, das das verursachen könnte? Ist Uglify übereifrig und entfernt etwas, was nicht sollte?

+0

hey, kannst du mir den Unterschied zwischen 'webpack -p' und dem' UglifyJsPlugin' Plugin erläutern? – Matthew

Antwort

67

Das Problem wurde durch den Uglify Mangler verursacht. Ohne zu wissen, welche Variable Umbenennungs das Problem verursacht wurde, war die Lösung vollständig Mangeln zu deaktivieren:

new webpack.optimize.UglifyJsPlugin({ 
    sourceMap: false, 
    mangle: false 
}) 

Dies als Webpack Plugin zu Ihrer Konfigurationsdatei hinzugefügt werden soll, zB:

var config = { 

    //... various config settings 

    plugins: [ 
    new webpack.optimize.UglifyJsPlugin({ 
     sourceMap: false, 
     mangle: false 
    }) 
    ] 
}; 
+5

Ich stimme die Antwort hoch, aber es wäre schöner, wenn wir dies als Teil der Webpack-JSON-Konfigurationsdatei sehen könnten, die Sie verwenden. Ich war mir nicht sicher, wo ich das in meine eigene Konfigurationsdatei legen sollte, damit es funktioniert. –

+5

Danke, ich habe ein Beispiel hinzugefügt, das Plugin in eine Konfigurationsdatei einzufügen. – duncanhall

+0

Für mich heißt es Webpack ist nicht definiert. Wenn ich es als 'var webpack = require ('webpack') definiere;' in der Konfiguration des Webpacks, dann heißt es: "Modul 'webpack' kann nicht gefunden werden". Muss ich etwas installieren? –

0

Für diejenigen, die Deaktiviert Mangel und immer noch das Problem, überprüfen Sie, ob Sie mit -P-Parameter erstellen. Es scheint -p auch mangle die Ausgabe, und in meinem Fall musste ich UflifyJsPlugin mangle auf false und bauen ohne die Option -p, um es zum Arbeiten zu bringen (auf Kosten einer Erhöhung der Gewicht der js von etwa 50 %)

Verwandte Themen