node.js - 在 Node.js 中组合两个 Transform 流

标签 node.js stream gulp

我有一个无操作转换流测试,它输出通过它的所有文件的列表。为什么下面的代码只输出一次文件列表?如何正确组合两个流?

var composed = test().pipe(test());
gulp.src('source/*').pipe(composed);

最佳答案

要组合流,您需要使用 pipe() 第一个流到第二个流,但您还必须修改 pipe()unpipe() > 所以它们适用于第二个流。这样,对组合流上的 pipe() 的其他调用将使用第二个流的输出而不是第一个流的输出。

function compose(s1, s2) {
    s1.pipe(s2);
    s1.pipe = function (dest) {
        return s2.pipe(dest);
    }
    s1.unpipe = function (dest) {
        return s2.unpipe(dest);
    }
    return s1;
}

var composed = compose(test(), test());
gulp.src('source/*')
    .pipe( composed )  // src -> s1 -> s2
    .pipe( ... );      // s2 -> ...

关于node.js - 在 Node.js 中组合两个 Transform 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23520232/

相关文章:

Node.js Gulp src/dest 4.0 行为与 Gulp 3.6

javascript - 是否可以运行无限循环而不阻塞执行流程?

javascript - 无法使用 Node.js 处理 PHP 文件

Streams 上的startsWith 的Scala 实现

dns - 强制 gulp 使用不同的主机名

javascript - 为什么 Gulp 不保留 dest 函数返回的文件名?

javascript - node.js ~ 构建 Promise resolves 的链式序列

javascript - 如何使用子 process.exec 模块切换或最小化窗口

vb.net - 在 vb.net 中输入文本字段解析器的字符串

java - 为什么 Files.lines(和类似的 Streams)不会自动关闭?