我正在为我的一个程序编写一个命令行界面,如果适合,我想使用
winston的彩色输出(输出是一个终端,而不是重定向到一个文件).
在bash中,可以使用-t测试完成,因为这个SO answer正确地说.但是我正在寻找用于测试这个的node.js替代方法.
解决方法
与您链接到的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'); }