如何构建节点应用程序,将多个流运行到一个

时间:2015-07-01 00:46:26

标签: node.js stream

系列中的第二个问题;) 我正在构建一个非常像Modernizr's build tool的东西。我有一个表单,其中包含几个可以检查的模块和一个“生成”按钮。生成后,用户应该只获得一个包含他/她所选文件的zip文件。

asked earlier如果我可以利用gulp为我做这个后端魔术,那么我不必重新发明轮子,但事实证明这是单向的。

现在我坐在我的节点应用程序上并试图弄清楚如何以最有效的方式将多个流合并在一起?

我可以看到它的工作原理如下:

var Zipping = new Ziping(); //instatiate zip for gathering files

CssStream
    .pipe( new getAllLess() ) //open several files
    .pipe( new concatenateLess() ) //concatenate them
    .pipe( new prepareLess() ) //some dynamic parts have to be replace in the less contents
    .pipe( new compileLess() ) //compile to CSS
    .pipe( Zipping.Add() ) //add to zip

JsStream
    .pipe( new getAllJs() ) //open several files
    .pipe( new concatenateJs() ) //concatenate them
    .pipe( new uglifyJs() ) //uglify them (I can probably combine the above into this step)
    .pipe( Zipping.Add() ) //add to zip

HtmlStream
    .pipe( new getHtml() ) //open several files
    .pipe( new prepareHtml() ) //do some replacements for dynamic parts
    .pipe( Ziping ) //add to zip

//after all three streams finished running

Ziping.compile(); //send zip as response to client

这一点,让我想知道我怎么能“听”所有三个流来完成拉链?我甚至不知道节点的流是否可以这样。

接下来的问题是如何在一个步骤中收集多个文件,或者是否有更好的方法来执行此操作?

感谢任何帮助。

0 个答案:

没有答案