【发布时间】:2017-04-21 02:06:20
【问题描述】:
我正在尝试使用gulp-pump 和gulp-run-sequence,但遇到了关于task completion callback called too many times 的错误。
下面是我的 Gulpfile:
var gulp = require('gulp');
var sass = require('gulp-sass');
var uglify = require('gulp-uglify');
var autoprefixer = require('gulp-autoprefixer');
var cleanCSS = require('gulp-clean-css');
var rename = require('gulp-rename');
var runSequence = require('run-sequence');
var pump = require('pump');
var pumpCb = function (err) {
if (err) {
console.log('Error: ', err.toString());
}
};
// Local
gulp.task('local-sass', function (pumpCb) {
return pump([
gulp.src('public/assets/src/sass/**/*.scss'),
sass(),
autoprefixer(),
gulp.dest('public/assets/dist/css/')
],
pumpCb
);
});
gulp.task('local-js', function (pumpCb) {
return pump([
gulp.src('public/assets/src/js/**/*.js'),
uglify(),
gulp.dest('public/assets/dist/js/')
],
pumpCb
);
});
// Production
gulp.task('prod-sass', function (pumpCb) {
return pump([
gulp.src('public/assets/src/sass/**/*.scss'),
sass({outputStyle:'compact'}),
autoprefixer(),
gulp.dest('public/assets/dist/css/')
],
pumpCb
);
});
gulp.task('prod-css', function (pumpCb) {
return pump([
gulp.src(['./public/assets/dist/css/**/*.css','!./public/assets/dist/css/**/*.min*']),
cleanCSS(),
rename({ suffix: '.min' }),
gulp.dest('public/assets/dist/css/')
],
pumpCb
);
});
gulp.task('prod-js', function (pumpCb) {
return pump([
gulp.src('public/assets/src/js/**/*.js'),
uglify(),
rename({ suffix: '.min' }),
gulp.dest('public/assets/dist/js')
],
pumpCb
);
});
// Calls
gulp.task('default', function () {
gulp.watch('public/assets/src/sass/**/*.scss',['local-sass']);
gulp.watch('public/assets/src/js/**/*.js',['local-js']);
});
gulp.task('prod', function () {
runSequence('prod-sass','prod-css','prod-js');
});
从 run-sequence 和 pump 的文档中我看不出我做错了什么,所以也许这是对 Gulp 的更广泛的误解?
我已经阅读了大多数关于同一错误的答案,但我认为它们不适用于这个特定案例,我也看不出如何将他们的发现推断到我自己的 Gulpfile 中。
任何帮助将不胜感激!
【问题讨论】:
-
尝试从每个任务的函数参数中删除
pumpCB。我不相信您可以为任务函数提供回调并返回流。 -
刚刚试了一下,虽然它消除了回调问题,但这也意味着如果我的 SASS 有错误,节点只会报告
Error: premature close,而不是关于 SASS 中的内容和位置的有用错误出错。没有正确的方法来使用pump、sequence和回调错误吗?