我怎样才能禁用nodejs ChildProcess.spawn标准输出缓冲区?

我想拦截compass watch输出使用以下代码:

 var spawn = require('child_process').spawn; var child = spawn('compass', ['watch'], { cwd: process.cwd() }); process.on('data', function (data) { console.log('[log] ' + data); }); 

我的问题是:我必须保存文件两次覆盖消息出来的标准输出。 这是一个示例输出…

node compass.js

 [log] >>> Compass is watching for changes. Press Ctrl-C to Stop. 

我保存完文件后

 [log] >>> Change detected at 20:17:19 to: components/_avatar.scss 

我第二次保存文件后

 [log] overwrite assets/css/modules/projects.css >>> Change detected at 20:17:26 to: components/_avatar.scss 

它看起来像“覆盖assets / css / modules / projects.css”正在缓冲。 有什么办法可以避免这个缓冲区?

正如我刚刚发现的,指南针(或者可能是OSX)是真正的罪魁祸首。 如果我运行compass watch输出即时更新。 但是,如果我运行compass watch > out.log发生与节点相同的行为。