Когда вы объединяете приложение без преобразований (например, Babel) и минификации (например, UglifyJS), вы получаете: неиспользованный экспорт гармонии.
Теперь Webpack 2+ отмечает только неиспользуемый код и не экспортирует его внутри модуля. Он извлекает все и оставляет неиспользуемый код для библиотек минификации.
Для этого вы можете использовать UglifyJS с babel. UglifyJS пока не поддерживает новые языковые функции Javascript ES2015 +. Вам понадобится Babel, чтобы перенести код на ES5, а затем использовать UglifyJS для очистки неиспользуемого кода.
Вам понадобится файл .babelrc с:
Мы должны указать предустановке (в нашем случае babel-preset-env) пропустить транспиляцию модуля.
{
"presets": [
["env", {
"loose": true,
"modules": false
}]
]
}
и соответствующая конфигурация веб-пакета:
module: {
rules: [
{ test: /\.js$/, loader: 'babel-loader' }
]
},
plugins: [
new webpack.LoaderOptionsPlugin({
minimize: true,
debug: false
}),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: true
},
output: {
comments: false
},
sourceMap: false
})
]
ИЛИ
Babili - лучший вариант, поскольку Babili удалит неиспользуемый код перед транспиляцией. Гораздо проще обнаружить неиспользуемые классы до перехода на ES5. Встряхивание дерева также будет работать для объявлений классов, а не только для функций.
Тебе понадобится:
npm install babili babili-webpack-plugin --save-dev
Используйте следующий плагин в конфигурации вашего веб-пакета, например:
plugins: [
new BabiliPlugin()
]
Также существует оптимизированный способ использования бабили в качестве предустановки. Вы можете сослаться на их сайт, чтобы использовать его в качестве предустановки для babel-loader.
person
SomberTuna
schedule
16.02.2018