我正在从 Gulp 3 升级到 4,我遇到了一个错误:
The following tasks did not complete: build
Did you forget to signal async completion?
我明白它在说什么,但不明白为什么这段代码会触发它。
错误与否,任务完成(文件被连接并写入 dest)。在没有惰性管道的情况下执行相同的代码不会导致错误,并且在惰性管道中删除连接也可以修复错误。
将整个事物包装在创建流(如合并流)的东西中可以解决问题。我猜想 gulp-concat 和lazypipe 之间的交互会阻止流被正确返回。
这是(简化的)任务:
gulp.task('build', function() {
var dest = 'build';
var buildFiles = lazypipe()
.pipe(plugins.concat, 'cat.js') // Task will complete if I remove this
.pipe(gulp.dest, dest);
// This works
// return gulp.src(src('js/**/*.js'))
// .pipe(plugins.concat('cat.js'))
// .pipe(gulp.dest(dest));
// This doesn't (unless you wrap it in a stream-making function)
return gulp.src(src('js/**/*.js'))
.pipe(buildFiles());
});
任何建议表示赞赏!