2015-05-19 4 views
33

У меня есть изоморфное приложение React, которое поставляется в комплекте через webpack.Оптимизация Webpack с плагином UglifyJS вызывает ошибку времени выполнения

У меня есть 2 точки входа, соответствующие 2 связанным файлам: vendors.js и app.js.

При запуске webpack-dev-server или при компиляции без каких-либо флагов оптимизации все работает нормально. Однако, как только я пытаюсь использовать плагин Uglify, скомпилированный вывод содержит ошибки.

Я попытался:

webpack -p
webpack -optimize-minimize

или в конфигурации:

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

Но результат в той же самой ошибки во время выполнения (неопределенные переменные).

Есть ли что-то очевидное, что может быть причиной этого? Является ли Uglify чрезмерно усердным и что-то не удаляет?

+0

эй, не могли бы вы объяснить мне разницу между 'webpack -p' и использованием плагина' UglifyJsPlugin'? – Matthew

ответ

67

Проблема была вызвана агглером Uglify. Не зная, какая переменная переименование вызывает проблемы, решение было отключить коверкая полностью:

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

Это должно быть добавлено в качестве Webpack Plugin в ваш конфигурационный файл, например:

var config = { 

    //... various config settings 

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

Я отвечаю на голосование, но было бы лучше, если бы мы увидели это как часть конфигурационного файла webpack JSON, который вы используете. Я не был уверен, где разместить это в моем собственном файле конфигурации, чтобы заставить его работать. –

+5

Спасибо, я добавил пример включения плагина в файл конфигурации. – duncanhall

+0

Для меня это говорит, что веб-пакет не определен. Если я определяю его как «var webpack = require (« webpack »),' в конфигурации webpack, то он говорит: «Не удается найти модуль« webpack ». Мне нужно что-то установить? –

0

Для тех, кто дезактивированный mangle и все еще есть проблема, проверьте, строите ли вы с параметром -p. Похоже, что -p также искажает вывод, и в моем случае мне пришлось переключить UflifyJsPlugin mangle на false и построить без флага -p, чтобы заставить его работать (за счет увеличения веса js около 50 %)

Смежные вопросы