之前使用gulp打包的时候一直很顺利,可今天突然给我报了 GulpUglifyError: unable to minify JavaScript
,一万只XXX~带过
gulp.task('script', function() {
gulp.src(['public/**/*.js', 'public/lib/**/*.js'])
.pipe(uglify())
.pipe('dist/js')
})
报了该错误主要是因为javascirpt语法问题,在es5环境里使用了es6、es7语法,不出问题才怪。 此时你要每个文件去看是不可能的。
解决方法一
检查哪一个文件中的哪一行有问题 安装 gulp-util
模块 用于打印日志
npm install --save-dev gulp-util
gulp.task('script', function() {
gulp.src(['public/**/*.js', 'public/lib/**/*.js'])
.pipe(uglify())
.on('error', function(err) {
gutil.log(gutil.colors.red('[Error]'), err.toString());
})
.pipe('dist/js')
})
打印报错内容
ADMINs-Mac-pro:frontend admin$ gulp script
[11:45:54] Using gulpfile ~/workspace/frontend/gulpfile.js
[11:45:54] Starting 'script'...
[11:45:54] Finished 'script' after 14 ms
[11:45:55] [Error] GulpUglifyError: unable to minify JavaScript
Caused by: SyntaxError: Unexpected token: punc (,)
File: /Users/admin/workspace/frontend/public/js/basic.js
Line: 247
这样就可以精准的逐个排查文件了。
解决方法二
继续方法一 安装 babel
模块
gulp-babel 、babel-preset-es2015
npm install --save-dev gulp-babel babel-preset-es2015
gulp.task('script', function() {
gulp.src(['public/**/*.js', 'public/lib/**/*.js'])
.pipe(babel({
presets: ['es2015'] // es5检查机制
}))
.pipe(uglify())
.on('error', function(err) {
gutil.log(gutil.colors.red('[Error]'), err.toString());
})
.pipe('dist/js')
})
到了这一步,你就已经完成解决 gulp-uglify
压缩JavaScript 不兼容 es5
语法的问题了。