节点,使用stream的grunt自定义任务

嗨任何人都可以帮我一个自定义的咕task任务?

我基本上使用child_process调用

var cp = exec(cmd, {}, function (err, stdout, stderr) {} 

这当然有stdout等如果我

 cp.stdout.pipe(process.stdout); 

它将一些东西维权到控制台。 我在一个循环中进行这个调用,所以这里是一个框架

 this.files.forEach(function(f) { var src = f.src.map(function(filepath) { var cmd = util.format("%s %s", options.xUnit, src); var cp = exec(cmd, {}, function (err, stdout, stderr) { .... cb(); }); if (options.stdout || grunt.option('verbose')) { cp.stdout.pipe(process.stdout); } 

这一切工作正常。 但是因为我做了好几次,我至less希望能够索引stderr有多less次价值。 我基本上正在运行testing的集合。 如果全部通过,那么stderr是空白的,如果不是的话,我不想停止其余的testing,我希望他们都运行,但我想在最后输出“你有3个集合有失败的testing”。 我不明白为什么我似乎无法得到它的工作。 如果我宣布

 var output = 0; 

然后

 if (options.stderr || grunt.option('verbose')) { cp.stdout.pipe(process.stdout); output ++; } 

然后,我尝试在全部运行后打印到控制台,但始终为0。

我真的很想知道如何得到所有输出的副本,并从每个testing会话中parsing出最后一行,其中包含失败的testing次数。 但是,这似乎是出于可能的境界。 我已经尝试了所有的方式与stream的东西,并没有得到什么。

无论如何,如果任何人都可以帮助,我将不胜感激