Неожиданный токен: оператор (>) от UglifyJs

у меня есть 2 проекта vue-Cli webpack (ClientApp и Lib). Lib-это библиотека компонентов (совместно с другими проектами)

когда я создаю свой проект ClientApp npm run build, у меня есть следующие ошибки:

ERROR in static/js/app.d08a24ce0e8d0438ce68.js from UglifyJs
Unexpected token: operator (>) [C:/.../Lib/src/tools/escape-key.js:3,0][static/js/app.d08a24ce0e8d0438ce68.js:17468,38]

вопросы

похоже, что ошибка происходит из функции стрелки в файле escape-key.js. Это синтаксис ES6, и UglifyJS не может разобрать это. Разве Вавилон не должен быть первым, перед уродством? Обратите внимание, что это хорошо работает с *.vue файлы.

структура проекта

ClientApp
   | - build
   | - config
   | - src
       | - App.Vue // import EscapeKey from '~lib/tools/escape-key';



Lib
  | -src
     | - tools
         | - escape-key.js

ClientApp по webpack.основа.conf.файл JS

Примечание есть псевдоним Либ.

resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      '@': resolve('src'),
      '~lib': path.join(__dirname, '../../lib/src'),
    }
  },

пожалуйста чувствуйте свободным спросить больше деталей если требуется.

4 ответов


добавить

"uglifyjs-webpack-plugin": "v1.0.0-beta.1",

к вашим зависимостям dev и обновите свой webpack.config.js файл для использования этой версии явно:

const UglifyJSPlugin = require('uglifyjs-webpack-plugin')

module.exports = {
  plugins: [
    new UglifyJSPlugin()
  ]
}

uglifyjs-webpack-плагин последней стабильной версии (v0.4.6) использует более старую версию uglify-js вместо uglify-es это способно транспилировать ES6. Эта зависимость была обновлена в 1.0.0 бета.Выпуск 1.

https://github.com/webpack-contrib/uglifyjs-webpack-plugin/releases/tag/v1.0.0-beta.1


это решило проблему для меня. Я установил uglifyjs-webpack-plugin

npm install uglifyjs-webpack-plugin --save-dev

затем добавил Это к моему webpack.config

const UglifyJSPlugin = require('uglifyjs-webpack-plugin')

module.exports = {
  plugins: [
    new UglifyJSPlugin()
  ]
}

версия uglify, которую вы используете, вероятно, не поддерживает ES6.

https://github.com/mishoo/UglifyJS2/tree/harmony это версии ES6, как сейчас

Если вы хотите использовать webpack плагин, обязательно обратите внимание на раздел установки, касающийся es6

важно! плагин имеет одноранговую зависимость от uglify-js, поэтому для того, чтобы использовать плагин, также uglify-js должен быть установленный. Этот в настоящее время (2017/1/25) доступны пакеты npm uglify-js; однако не поддерживает минификацию кода ES6. Для того, чтобы поддержать на ES6, является ES6-capable, a.к. a. гармония, версия UglifyJS должна быть предоставлена.

Если ваша цель minification ES6:

yarn add git://github.com/mishoo/UglifyJS2#harmony-v2.8.22 --dev


после изменения конфигурации babel-loader это сработало.

конфигурация Babel-loader

{
  test: /\.js$/,
  loader: 'babel-loader',
  include: [path.join(__dirname, '../../Lib/src'), resolve('src'), resolve('test')]
}