在Node.js中构造两个Transformstream
我有一个无操作转换streamtesting,输出通过它传递的所有文件的列表。 为什么下面的代码只输出一次文件列表? 我如何正确组合两个stream?
var composed = test().pipe(test()); gulp.src('source/*').pipe(composed);
为了组成stream,您将pipe()
从第一个stream向第二个stream,但是还必须修改pipe()
和unpipe()
以便将它们应用于第二个stream。 通过这种方式,对构成stream的pipe()
额外调用将使用第二个stream的输出,而不是第一个stream的输出。
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 -> ...
pipe()
返回正在pipe道的stream,而不是(允许链接)。 所以第二行基本上是试图pipe道到test()
的第二个实例。 你需要做的是:
var first = test(); first.pipe(test()); gulp.src('source/*').pipe(first);
要么:
gulp.src('source/*') .pipe(test()) .pipe(test());