在node.js中测试实际输出是否为终端

时间:2011-08-16 15:07:05

标签: command-line node.js command-line-interface

我正在为我的一个程序编写一个命令行界面,如果合适的话,我想使用winston的彩色输出(输出是终端,而不是重定向到文件)。

在bash中,可以使用-t测试完成,因为SO answer正确地说明了这一点。但我正在寻找node.js替代方案来测试它。

1 个答案:

答案 0 :(得分:24)

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

要检查输出是否已重定向,可以使用'isatty'方法。 文档:http://nodejs.org/docs/v0.5.0/api/tty.html#tty.isatty

例如,检查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');
}