2015-05-19 10 views
33

Ho un'applicazione isomorfa React che è in bundle via webpack.Ottimizzazione del Webpack con il plugin UglifyJS causa l'errore di runtime

Ho 2 punti di ingresso corrispondenti a 2 uscite file in bundle: vendors.js e app.js.

Quando si esegue webpack-dev-server o durante la compilazione senza alcun contrassegno di ottimizzazione, tutto funziona correttamente. Tuttavia, non appena provo a utilizzare il plugin Uglify, l'output compilato contiene errori.

ho provato:

webpack -p
webpack -optimize-minimize

o nella configurazione:

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

Ma tutto risultato nella stessa errore di runtime (variabili non definite).

C'è qualcosa di ovvio che potrebbe causare questo? Uglify è troppo zelante e rimuove qualcosa che non dovrebbe?

+0

hey, potresti spiegarmi la differenza tra 'webpack -p' e usare il plugin' UglifyJsPlugin'? – Matthew

risposta

67

Il problema era causato dal mangler Uglify. Senza sapere che rinomina variabile è stata la causa del problema, la soluzione è stata di spegnere pressare tutto:

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

Questo dovrebbe essere aggiunto come Webpack Plugin al file di configurazione, ad esempio:

var config = { 

    //... various config settings 

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

Sto votando la risposta, ma sarebbe più bello se potessimo vederlo come parte del file di configurazione JSON del pacchetto web che stai utilizzando. Non ero sicuro di dove collocarlo nel mio file di configurazione per farlo funzionare. –

+5

Grazie, ho aggiunto un esempio di includere il plugin in un file di configurazione. – duncanhall

+0

Per me dice che il webpack non è definito. Se lo definisco come 'var webpack = require ('webpack');' nella configurazione del webpack allora dice "Impossibile trovare il modulo 'webpack'". Devo installare qualcosa? –

0

Per coloro che mangle disattivato e ha ancora il problema, controllare se si costruisce con parametro -p. Appare -p anche manipolare l'output, e nel mio caso, ho dovuto passare UflifyJsPlugin mangle a false e build senza il flag -p per farlo funzionare (al costo di un aumento del peso del js di circa 50 %)

Problemi correlati