如何使用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')); });
不幸的是,按照现在,你不能使用uglify
和es-next
代码 ,你可以:
- 使用Babel转储到
ES5
- 使用
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