合并流节点

Combining streams node

本文关键字:节点 合并      更新时间:2023-09-26

这个函数的返回值需要是一个流。在非观看模式下,这很容易;返回rebundle, browserify流被转换等等。然而,在监视模式下,rebundle在每次更新时运行,并每次创建一个新流。我需要一种方法来整合所有这些流,因为它们被创建成一个单一的无尽的流,我可以返回,并可以实际消耗的线。使用组合流,似乎一旦数据被读取,流就不再是可写的,所以这是不可能的。任何帮助将不胜感激!

var bundleify = function(watch) {
    var bundler = (watch?watchify:browserify)('main.js');
    var rebundle = function () {
        return bundler.bundle()
            .on('error', console.log)
            .pipe(source('main.js'))
            .pipe(rename('app.js'))
            .pipe(jsTasks()); // lazypipe with other tasks
    };
    // Regular browserify, just return the stream.
    if (!watch) {
        return rebundle();
    }
    // Watchify, rebundle on update.
    bundler.on('update', function() {
        rebundle();
    });
    // return ????
}

这是我想到的解决方案。它很简陋(诚然,我对流没有很好的理解),但看起来它是有效的。还是想找个更好的方法。

var outstream = through2.obj();
var interceptor = function(){
    return through2.obj(function(obj, enc, cb) {
        outstream.push(obj);
        cb()
    });
}
bundler.on('update', function() {
    rebundle().pipe(interceptor());
});
rebundle().pipe(interceptor());
return outstream;