Webpack 4, Babel переносится на ES5 и uglifyjs-webpack-plugin беды - PullRequest
0 голосов
/ 31 декабря 2018

У меня ошибка при попытке запустить производственную сборку веб-пакета.

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 устарела и будет удалена в следующем мажоре в пользу этого.

...