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

Sta*_*wer 24 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'));
});
Run Code Online (Sandbox Code Playgroud)

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

该位置的代码就是这个

 setters: [],
 execute: function () {
     class MenuItem {  // <-- line 1628
Run Code Online (Sandbox Code Playgroud)

怎么了?

Str*_*ior 47

UglifyJS 目前不支持像类这样的 EcmaScript 6结构.

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

2017-06-17更新

旨在与ES6协同工作的UglifyJS分支现已发布uglify-es于npm.

更新2018-09-10

'terser'是新的'uglify-es'.'uglify-es'不再维护.

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

npm install gulp-terser --save-dev
Run Code Online (Sandbox Code Playgroud)

  • @SMT:同意.我得到的印象是他们一直在努力.他们现在已经发布了一个"和谐"版本作为"uglify-es",这有助于支持ES6的一些向后API兼容性. (2认同)

Ada*_*eis 6

如果您遇到这个问题,你其实是一个transpiler一步通天塔一样,请确保您在您正确的巴贝尔预设.babelrc文件。否则 Babel 只会让你的代码保持原样。

例如

{
  "presets": ["es2015"]
}
Run Code Online (Sandbox Code Playgroud)