У меня ошибка при попытке запустить производственную сборку веб-пакета.
node_modules/webpack/bin/webpack.js -p --config webpack.config.production.js
...
ERROR in app.js from UglifyJs
Unexpected token: keyword (const) [app.js:18757,0]
...
Глядя на эту ошибку, я узнал, что это, скорее всего, относится к коду ES6, попадающему в uglifyjs-webpack-plugin
Но почему, если у меня есть настройка babel для переноса кода вES5?
.babelrc
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": "6.10",
"esmodules": true
}
}
]
],
"plugins": ["@babel/plugin-proposal-object-rest-spread"]
}
общая конфигурация webpack
module.exports = (env, options) => ({
...
module: {
rules: [
{
test: /\.js$/,
use: {
loader: "babel-loader",
options: {
presets: ["@babel/preset-env"]
}
},
exclude: /node_modules/
},
...
И мой конфигурационный файл
...
const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
...
const webpackCommonConfig = require("./webpack.config.common")();
module.exports = merge(webpackCommonConfig, {
mode: "production",
optimization: {
minimizer: [
new UglifyJsPlugin({ cache: false, parallel: false, sourceMap: false }),
...
]
}
});
Мое предположениевот что babel передаст оптимизацию js в es5.Чего мне не хватает?
Это интересная находка, которую я только что нашел после написания этой статьи.https://babeljs.io/docs/en/babel-preset-env#forcealltransforms
хотя
ПРИМЕЧАНИЕ: target.uglify устарела и будет удалена в следующем мажоре в пользу этого.