testingnode.js中的实际输出是否为terminal
我正在为我的一个程序编写一个命令行界面,如果合适(输出是terminal,而不是redirect到文件),我想使用Winston的彩色输出。
在bash中可以用-t
testing来完成,因为这个答案正确的说。 但是我正在寻找用于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'); }