Буквально сегодня столкнулся с этой ошибкой в своём личном Vue.js проекте. Начал я его с помощью vue-cli который ещё в декабре 2018 года генерировал не слишком актуальный, мягко говоря, шаблон для приложения. Как сейчас дела обстоят я не знаю. Надеюсь, что лучше.

ERROR in source-default~app~06837ae4.8b4156b67e5cea799303.js from UglifyJs

Unexpected token: punc «(» [source-default~app~06837ae4.8b4156b67e5cea799303.js:149,6]


Причина

Эта ошибка возникает если вы пытаетесь сжать с помощью UglifyJS ES6 код. Вкратце подоплёка такова: uglifyjs-webpack-plugin вернулся к использованию uglify-js вместо uglify-es с версии 2.0.0 (см. changelog) так как последний был заброшен.


Решение

Использовать terser-webpack-plugin. Под капотом он использует Terser который в своей сути является форком uglify-es. На момент написания этого предложения последний коммит в Terser был 21 минуту назад, поэтому им можно смело пользоваться. Terser старается сохранить совместимость API и CLI с uglify-es и uglify-js@3


Пример конфига Webpack

Чтобы включить terser-webpack-plugin в ваш сборочный процесс необходимо в конфиг вебпака в опции optimization добавить следующий код:

optimization: {
    minimize: true,
    minimizer: [
      new TerserPlugin({
        cache: true,
        parallel: true,
        terserOptions: {
          ecma10, // обратите внимание, что это последняя версия стандарта!
          compress: true,
          output: {
            comments: false,
            beautify: false
          }
        }
      })
    ]
  }

Собственно, тоже самое написано в документации к Вебпаку, но кто её читает, верно?