我正在尝试缩小我的脚本文件,我正在使用gulp任务运行器而我正在尝试gulp-uglify插件
码:
gulp.task('concat', function() {
return gulp.src('app/**/*.js')
// .pipe(concat('script.js'))
.pipe(uglify())
.pipe(gulp.dest('./dist/'))
});
但我得到的错误是
当我尝试运行gulp任务作为gulp concat任何帮助将不胜感激
使用ES6格式时会生成主要错误。使用gulp-uglify-es模块而不是'gulp-uglify'来克服此错误。
var uglify = require('gulp-uglify-es').default;
注意:不再维护gulp-uglify-es。您可能想要使用terser
/ gulp-terser
代替:
要在控制台中查看错误:
var gutil = require('gulp-util');
gulp.task('concat', function() {
return gulp.src('app/**/*.js')
// .pipe(concat('script.js'))
.pipe(uglify())
.on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); })
.pipe(gulp.dest('./dist/'))
});
要查找具有错误寄存器行号的确切文件并运行此任务:
var pump = require('pump');
gulp.task('uglify-error-debugging', function (cb) {
pump([
gulp.src('app/**/*.js'),
uglify(),
gulp.dest('./dist/')
], cb);
});
您是否在脚本文件中使用了ES6格式?如果是这样的话,现在尝试使用ES5,因为当你执行gulp-uglify时,它现在不理解ES6格式,之后尝试你的代码
gulp.task('concat', function() {
return gulp.src('app/**/*.js')
.pipe(concat('script.js'))
.pipe(uglify())
.pipe(gulp.dest('./dist/'))
});
并运行任务gulp concat
它将工作
我认为这里的最佳答案并不是解释如何获得错误。 docs有一个关于错误处理的部分:
如果gulp-uglify无法缩小特定文件,则会发出“错误”事件
因此,只需捕获错误并使用它执行任何操作(例如记录到控制台)以查看文件名,行号和其他信息:
uglify().on('error', console.error)
或者在更大的背景下:
gulp.task('foo', () => {
return gulp.src([
'asset/src/js/foo/*.js',
'asset/src/js/bar/*.js',
])
.pipe(uglify().on('error', console.error))
.pipe(concat('bundle.js'))
.pipe(gulp.dest('./'));
});
这给你一个超级有用的错误!
{ GulpUglifyError: unable to minify JavaScript
at [stack trace])
cause:
{ SyntaxError: Continue not inside a loop or switch
[stack trace]
message: 'Continue not inside a loop or switch',
filename: 'ProductForm.js',
line: 301,
col: 37,
pos: 10331 },
plugin: 'gulp-uglify',
fileName:
'/asset/src/js/foo/ProductForm.js',
showStack: false }
试试这个
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var minifyJS = require('gulp-minify');
gulp.task('concat', function() {
return gulp.src('app/**/*.js')
.pipe(minifyJS())
.pipe(concat('bundle.min.js'))
.pipe(uglify({ mangle: false }))
.pipe(gulp.dest('./dist/'));
});
对我来说,这是一个弃用的选项“preserveComments”,它产生了错误(并完全破坏了脚本)。
发现问题使用:
gulp.task('concat', function() {
return gulp.src('app/**/*.js')
.pipe(uglify())
.on('error', function (err) { console.log( err ) })
.pipe(gulp.dest('./dist/'))
});
您可能有语法错误或使用ES6语法。你可以先试试https://skalman.github.io/UglifyJS-online/。
无法缩小JavaScript的主要错误是找不到路径。您可以使用任务usemin为此您需要:
$ sudo npm install gulp-usemin --save-dev
$ sudo npm install gulp-livereload --save-dev
$ sudo npm install gulp-util --save-dev
并要求:
var usemin = require('gulp-usemin');
var livereload = require('gulp-livereload');
var gutil = require('gulp-util'); //gutil for error display
gulp.task('usemin',['jshint'], function(){
return gulp.src('./app/index.html')
.pipe(usemin({
css: [minifycss(),rev()],
scripts: [uglify().on('error', function(err) {gutil.log(gutil.colors.red('[Error]'), err.toString());this.emit('end');}),rev()]
}))
.pipe(gulp.dest('dist'))
.pipe(livereload());
});
Change the js: [uglify(), rev()] to scripts: [uglify(), rev()]