如何在Gulp上解决这个缩小错误?

时间:2016-08-11 03:35:30

标签: javascript gulp

我在运行此命令时遇到错误

gulp.task('minify', function () {
    return gulp
      .src('public/app/js/myapp.bundle.js')
      .pipe(uglify())
      .pipe(gulp.dest('public/app/js/myapp.bundle.min.js'));
});
  

GulpUglifyError:无法缩小JavaScript引起:SyntaxError:意外的令牌:name(MenuItem)(行:1628,col:18,pos:53569)

该位置的代码是

 setters: [],
 execute: function () {
     class MenuItem {  // <-- line 1628

出了什么问题?

2 个答案:

答案 0 :(得分:38)

UglifyJS does not currently support EcmaScript 6结构like classes

您可能需要首先通过转发器步骤运行JavaScript,或者找一个知道如何处理ES6代码的缩写器。

更新2017-06-17

旨在与ES6合作的UglifyJS分支现在在{npm}发布为uglify-es

更新2018-09-10

&#39;更简洁&#39;是新的&#39; uglify-es&#39;。 &#39;丑化-ES&#39;不再保持。

https://www.npmjs.com/package/gulp-terser

npm install gulp-terser --save-dev

const gulp = require('gulp');
const terser = require('gulp-terser');

function es(){
  return gulp.src('./src/index.js')
    .pipe(terser())
    .pipe(gulp.dest('./build'))
}

gulp.task('default', es);

答案 1 :(得分:4)

如果您遇到此问题并且实际上实际上是像Babel一样的转发器步骤,请确保在.babelrc文件中包含正确的Babel预设。否则,Babel将按原样保留您的代码。

E.g。

{
  "presets": ["es2015"]
}