如何在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: Unexpected token: name (MenuItem) (line: 1628, col: 18, pos: 53569)

该位置的代码为

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

怎么了?

UglifyJS目前不支持EcmaScript 6的类等结构。

你可能需要先通过一个转译器来运行你的JavaScript,或者找一个知道如何处理ES6代码的minifier。

2017-06-17

更新

设计用于ES6的UglifyJS分支现在在npm上发布为uglify-es

2018-09-10

更新

terser为新的uglify-es, uglify-es不再维护。

如果使用gulp, npmjs的gulp-uglify-es和npmjs的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);

如果遇到这个问题,并且实际上有类似Babel的转译器步骤,请确保在.babelrc文件中包含适当的Babel预设。否则,Babel将简单地保留您的代码。

{
  "presets": ["es2015"]
}

最新更新