node.js - 你如何使用 event-stream 来暂停和恢复 Gulp 流?
问题描述
我正在尝试将 npm 包克隆到客户端位置,因此我创建了多个流来完成此操作并将它们合并以从gulp.task()
. 但是,据我了解,我需要暂停流,以便任务接收正确的退出。
以下代码运行没有错误,但如果我评论该return
行。其中一个包仍然被复制,当我希望没有任何流到达它们的gulp.dest()
. 为什么不是所有的流都暂停了?
var gulp = require('gulp')
, eventStream = require('event-stream')
;
const projects = {
src: {
dependencies: {
codemirror: './src/lib/codemirror',
acorn: './src/lib/acorn'
}
}
};
gulp.task('init:client-packages', function () {
let streams = []
, ps = eventStream.pause();
// Load project client-side dependencies
for (let prj in projects) {
for (let pkg in projects[prj].dependencies) {
streams.push(
gulp.src('./node_modules/' + pkg + '/**')
.pipe(ps)
.pipe(gulp.dest(projects[prj].dependencies[pkg]))
);
}
}
// Merge source streams
return eventStream.merge(streams).pipe(ps.resume());
// ^^ Commenting this line doesn't block gulp.dest() from completing.
});
解决方案
可能存在错误,event-stream
因为以下代码仅适用于merge-stream
.
var merge = require('merge-stream')
, eventStream = require('event-stream')
;
gulp.task('init:client-packages', function() {
let streams = [];
// Load project client-side dependencies
for (let prj in projects) {
for (let pkg in projects[prj].dependencies) {
streams.push(
gulp.src('./node_modules/' + pkg + '/**')
.pipe(gulp.dest(projects[prj].dependencies[pkg]))
);
}
}
// Merge source streams
return merge(streams);
// --OR--
return eventStream.merge(streams); // Results in message below.
});
如上所述event-stream
,不能正确关闭任务。输出如下:
[23:36:46] Starting 'init:client-packages'...
[23:36:47] The following tasks did not complete: init:client-packages
[23:36:47] Did you forget to signal async completion?
Process terminated with code 1.
推荐阅读
- c# - 使用 Microsoft Playwright 在 Azure Function Linux 消费计划中创建本地 PDF 文件
- c# - 使用 C# 在 BigQuery 中组合非平面架构
- search - Parallelizing search in a 2D array on CUDA
- bash - 在 bash 变量中使用 find 计算找到的路径数
- logging - 寻找一种在simulation.log文件中向Gatling事务添加更多信息的方法
- ansible - jinja2 中缺少变量,Ansible 没有输出
- typescript - 为赛普拉斯指定 tsconfig.json 位置
- sql - 在 sequelize 中定义与自引用表的 belongsToMany 关系
- php - DKIM“失败”(签名错误)
- reactjs - 对齐文本和图像的问题,反应js material-ui