Проверьте, является ли фактический вывод терминалом или нет в файле node.js - PullRequest
20 голосов
/ 16 августа 2011

Я пишу интерфейс командной строки для одной из моих программ, и я хотел бы использовать цветной вывод winston , если это уместно (вывод является терминалом, и он не перенаправляется в файл ).

В bash это можно сделать с помощью теста -t, как правильно говорит этот ответ SO . Но я ищу альтернативу node.js для проверки этого.

1 Ответ

24 голосов
/ 17 августа 2011

Подобно bash-примерам, на которые вы ссылаетесь, Node имеет модуль 'tty', чтобы справиться с этим.

Чтобы проверить, перенаправлен ли вывод, вы можете использовать метод 'isatty'.Документы здесь: http://nodejs.org/docs/v0.5.0/api/tty.html#tty.isatty

Например, чтобы проверить, перенаправлен ли стандартный вывод:

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

Обновление

В новых версиях узла (начиная с 0.12.0),API предоставляет флаг для stdout, поэтому вы можете просто сделать это:

if (process.stdout.isTTY) {
  console.log('not redirected');
}
else {
  console.log('redirected');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...