错误:调用次数太多的任务完成回调
问题描述:
我正在将不同来源的Typescript文件编译为不同的目标。我需要知道什么时候所有编译完成才能运行minifyJS
任务。错误:调用次数太多的任务完成回调
问题是我得到的错误:Error: task completion callback called too many times
。这是对的,但我想如何管理呢?
gulp.task('compileTS', function (done) {
// Compile pages
pump([
gulp.src(paths.componentsTS),
typescript({
target: 'ES5'
}),
gulp.dest(paths.dest)
], done);
// Compile services
pump([
gulp.src(paths.servicesTS),
typescript({
target: 'ES5'
}),
gulp.dest(paths.dest + 'Services/')
], done);
// Compile tests
pump([
gulp.src(paths.testsTS),
typescript({
target: 'ES5'
}),
gulp.dest(paths.destTestsJS)
], done);
});
// This task needs to be called after 'compileTS' is done
gulp.task('minifyJS', ['compileTS'], function() {
pump([
gulp.src([paths.dest + paths.allJS]),
uglify(),
rename({
suffix: '.min'
}),
gulp.dest(paths.dest)
]);
});
答
添加一些计数器(例如remains
)来跟踪completness:
gulp.task('compileTS', function (done) {
var remains = 0;
// Compile pages
remains++;
pump([
gulp.src(paths.componentsTS),
typescript({
target: 'ES5'
}),
gulp.dest(paths.dest)
], completed);
remains++;
// Compile services
pump([
gulp.src(paths.servicesTS),
typescript({
target: 'ES5'
}),
gulp.dest(paths.dest + 'Services/')
], completed);
remains++;
// Compile tests
pump([
gulp.src(paths.testsTS),
typescript({
target: 'ES5'
}),
gulp.dest(paths.destTestsJS)
], completed);
function completed() {
if (--remains===0) {
done(null, '');
}
}
});
处理错误我一直为你的。
+0
我想到了这个解决方案。我想我会去做,这太糟糕了,没有“吞噬解决方案”。 – Elfayer
请你可以发布你的gulpfile.js完整,我可以在本地运行并为你发布一个解决方案:) – mattpark22