如何在自定义的through2stream中内部链接stream

我正在编写自己的节点stream,在文本​​stream中输出每行文本的对象。 这是最终的结果应该是什么样的:

fs.createReadStream('foobar') .pipe(myCustomPlugin()); 

实现将使用through2event-streamthrough2事情:

 var es = require('event-stream'); var through = require('through2'); module.exports = function myCustomPlugin() { var parse = through.obj(function(chunk, enc, callback) { this.push({description: chunk}); callback(); }); return es.split().pipe(parse); }; 

但是,如果我把这个分开,我所做的就是:

 fs.createReadStream('foobar') .pipe( es.split() .pipe(parse) ); 

这是不正确的。 有没有更好的办法? 我可以inheritancees.split()而不是在实现中使用它吗? 有没有事件stream或类似的线路上实施拆分的简单方法? 一个不同的模式会更好吗?

注意:我故意在函数内部进行链接,因为myCustomPlugin()是我试图公开的API接口。

我正在做类似的事情。 看到这个解决scheme: 从两个pipe道stream创build一个Node.jsstream

 var outstream = through2().on('pipe', function(source) { source.unpipe(this); this.transformStream = source.pipe(stream1).pipe(stream2); }); outstream.pipe = function(destination, options) { return this.transformStream.pipe(destination, options); }; return outstream; 

根据以前接受的答案中的链接,将我放在正确的Googlesearchpath中,如果您不介意另一个模块,则可以使用较短的版本: stream-combiner ( 阅读代码以说服发生了什么事情!

 var combiner = require('stream-combiner') , through = require('through2') , split = require('split2') function MyCustomPlugin() { var parse = through(...) return combine( split(), parse ) }