1
我写的吞噬任务在我的主要任务中破坏了runSequence。它有其他任务之间的运行,像这样:如何使用多个源文件从一个gulp任务一次返回所有流?
runSequence(
...
':build:prod:staticIndex',
':build:prod:typeDocToMD', // << this is my task
':build:prod:staticDocumentation',
...etc
,并在其后的任务也永远不会被执行。这使我认为我的任务不会返回单个流或者不正确。
这里是我的任务的样子:
gulp.task(':build:prod:typeDocToMD', (done: any) => {
let taskNum: number = 0;
let streams = [];
let filesPath = [
path.join(__CONFIG.TMPL_DOCS_PATH, '**/*.md')
];
glob(filesPath.toString(), function (er, files) {
taskNum = files.length - 1;
files.forEach((filename) => {
let stream = gulp.src(filename)
.pipe(addTypedoc()) // << this is the custom plugin I wrote
.pipe(gulp.dest(function (file) {
return file.base;
}));
stream.on('end',() => {
streams.push(stream);
if (streams.length === taskNum) {
gUtil.log('the end!');
return merge(streams);
}
});
});
});
});
所以我用水珠从文件夹中递归得到所有MD文件。我用merge-stream将所有流合并在一起并返回一个。
我得到'结束!'消息记录,但吞咽之后从未到达下一个任务。
我在这里错过了什么吗?
在此先感谢您的帮助!
不熟悉'merge-stream',但是你正在向它传递一组数据流。你尝试'返回合并(...流)'? – DavidDomain
谢谢你的回复,大卫!它没有帮助,但我找到了解决我的问题的办法(见下文)。 – williwaw