testingnode.js中的实际输出是否为terminal

我正在为我的一个程序编写一个命令行界面,如果合适(输出是terminal,而不是redirect到文件),我想使用Winston的彩色输出。

在bash中可以用-ttesting来完成,因为这个答案正确的说。 但是我正在寻找用于testing的node.js替代方法。

与链接到的bash示例类似,Node有“tty”模块来处理这个问题。

要检查输出是否被redirect,可以使用“isatty”方法。 Docs here: http : //nodejs.org/docs/v0.5.0/api/tty.html#tty.isatty

例如,检查是否redirect了stdout:

 var tty = require('tty'); if (tty.isatty(process.stdout.fd)) { console.log('not redirected'); } else { console.log('redirected'); } 

更新

在新版本的Node中(从0.12.0开始),API在stdout上提供了一个标志,所以你可以这样做:

 if (process.stdout.isTTY) { console.log('not redirected'); } else { console.log('redirected'); }