使用gulp-babel转换ES6到ES5,然后用uglify对代码压缩,gulpfile中的代码片段:
gulp.task('default', () => gulp.src('src/app.js') .pipe(babel()) .pipe(gulp.dest('dist')) );看到下面的报错
GulpUglifyError: unable to minify JavaScript SyntaxError: Unexpected token: keyword «const»
或 SyntaxError: Unexpected token: punc «(»
这个报错是因为uglify不支持ES6语法,但是我上面的gulp任务中是先用babel对ES6语法转换之后再uglify,说明babel没有正常工作。打开dist文件夹查看生成的文件中的代码,确实ES6语法没有被转成ES5。奇怪的是项目之前一直正常。
我的项目之前是在根目录下放了一个.babelrc文件,里面的内容是:
{ "presets": [ [ "@babel/preset-env", { "targets": "> 0.5%, not dead" } ] ], "comments": false, "ignore": [] }
研究了很久,发现问题应该还是出在presets没有生效上,最后按gulp-balel官方说明文档的例子解决:
gulp.task('default', () => gulp.src('src/app.js') .pipe(babel({ presets: ['@babel/env'] })) .pipe(gulp.dest('dist')) );
标签:ES6,ES5,pipe,src,babel,gulp From: https://www.cnblogs.com/johnjackson/p/17104148.html