如何使用gulp-uglify来缩小ES6的function?

当我运行gulp我得到以下错误:

[12:54:14] { [GulpUglifyError: unable to minify JavaScript] cause: { [SyntaxError: Unexpected token: operator (>)] message: 'Unexpected token: operator (>)', filename: 'bundle.js', line: 3284, col: 46, pos: 126739 }, plugin: 'gulp-uglify', fileName: 'C:\\servers\\vagrant\\workspace\\awesome\\web\\tool\\bundle.js', showStack: false } 

违规行包含一个箭头function:

 var zeroCount = numberArray.filter(v => v === 0).length 

我知道我可以用下面的代码来弥补缩小误差:

 var zeroCount = numberArray.filter(function(v) {return v === 0;}).length 

我怎样才能在包含ES6function的代码上运行gulp而不会导致缩小失败?

你可以充分利用gulp-babel …

 let gulp = require('gulp'); let babel = require('gulp-babel'); let uglify = require('gulp-uglify'); gulp.task('minify', () => { return gulp.src('src/**/*.js') .pipe(babel({ presets: ['es2015'] })) .pipe(uglify()) // [...] }); 

这将会在你准备的时候尽早将你的es6传输出去,并且在广受支持的“普通”javascript中产生出来。

你实际上可以uglify ES6的代码,而不需要transpilation。 而不是gulp-uglifyes插件,使用gulp-uglifyes插件。

 var gulp = require('gulp'); var rename = require('gulp-rename'); var uglify = require('gulp-uglifyes'); var plumber = require('gulp-plumber'); var plumberNotifier = require('gulp-plumber-notifier'); var sourcemaps = require('gulp-sourcemaps'); var runSequence = require('run-sequence').use(gulp); gulp.task('minjs', function () { return gulp.src(['/dist/**/*.js', '!/dist/**/*.min.js']) .pipe(plumberNotifier()) .pipe(sourcemaps.init()) .pipe(uglify({ mangle: false, ecma: 6 })) .pipe(rename(function (path) { path.extname = '.min.js'; })) .pipe(sourcemaps.write('.')) .pipe(gulp.dest('/dist')); }); 

不幸的是,按照现在,你不能使用uglifyes-next代码 ,你可以:

  1. 使用Babel转储到ES5
  2. 使用Babili而不是Uglify

接受的答案并没有真正回答如何直接es6。 如果你想在没有转译的情况下缩小es6,gulp-uglify v3.0.0可以实现这一点:

1.)首先,将你的gulp-uglify软件包升级到3.0.0以上如果你正在使用纱线并想更新到最新版本:

 yarn upgrade gulp-uglify --latest 

2.)现在你可以使用uglify-es,uglify的“es6版本”,如下所示:

 let uglifyes = require('uglify-es'); let composer = require('gulp-uglify/composer'); let uglify = composer(uglifyes, console); gulp.task('compress', function () { return gulp.src('src/*.js') .pipe(uglify()) .pipe(gulp.dest('dist')) }); 

欲了解更多信息: https : //www.npmjs.com/package/gulp-uglify

Interesting Posts