Тествайте дали действителният изход е терминал или не в node.js

Пиша интерфейс на командния ред за една от моите програми и бих искал да използвам цветния изход на winston ако е подходящо (изходът е терминал и не е пренасочен към файл).

В bash може да се направи с теста -t като това ТАКА отговор казва правилно. Но търся алтернативата node.js за тестване на това.


person KARASZI István    schedule 16.08.2011    source източник


Отговори (1)


Подобно на примерите за 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');
}
person loganfsmyth    schedule 17.08.2011
comment
Може би API се е развил, но имайте предвид, че според това, предпочитаният начин за проверка ако възел работи на TTY е да поискате process.stdout.isTTY - person epidemian; 02.03.2013
comment
@epidemian Добро обаждане, актуализирах отговора. API определено се е развил, тъй като това е доста стар отговор. - person loganfsmyth; 02.03.2013