TTY
Модуль tty предоставляет классы tty.ReadStream и tty.WriteStream. В большинстве случаев использование этого модуля напрямую не требуется или невозможно. Однако к нему можно получить доступ с помощью:
const tty = require('tty');
Когда Node.js обнаруживает, что он выполняется с подключенным текстовым терминалом («TTY»), process.stdin по умолчанию будет инициализирован как экземпляр класса tty.ReadStream, а process.stdout и process.stderr — как экземпляры tty.WriteStream. Предпочтительный метод определения того, выполняется ли Node.js в контексте TTY, — проверка значения свойства process.stdout.isTTY на соответствие значению true:
$ node -p -e "Boolean(process.stdout.isTTY)" true $ node -p -e "Boolean(process.stdout.isTTY)" | cat false
В большинстве случаев у приложения нет необходимости вручную создавать экземпляры классов tty.ReadStream и tty.WriteStream.
Класс: tty.ReadStream[src]
Класс tty.ReadStream является подклассом net.Socket и представляет собой читаемую сторону TTY. В обычных условиях process.stdin будет единственным экземпляром tty.ReadStream в процессе Node.js, и нет причин создавать дополнительные экземпляры.
readStream.isRaw
Значение типа boolean, которое равно true в случае, если TTY в данный момент настроен для работы как прибор в сыром режиме. По умолчанию false.
readStream.isTTY
Значение типа boolean, которое всегда равно true для экземпляров tty.ReadStream.
readStream.setRawMode(mode)
-
mode<boolean> Еслиtrue, настраиваетtty.ReadStreamдля работы как прибор в сыром режиме. Еслиfalse, настраиваетtty.ReadStreamдля работы в стандартном режиме. СвойствоreadStream.isRawбудет установлено в результирующий режим. - Возвращает: <this> — экземпляр потока чтения.
Позволяет настроить tty.ReadStream для работы как прибор в сыром режиме.
В сыром режиме входные данные всегда доступны посимвольно, без модификаторов. Кроме того, отключается вся специальная обработка символов терминалом, включая отображение вводимых символов. Обратите внимание, что CTRL+C больше не вызовут SIGINT в этом режиме.
Класс: tty.WriteStream[src]
Класс tty.WriteStream является подклассом net.Socket и представляет собой записываемую сторону TTY. В обычных условиях process.stdout и process.stderr будут единственными экземплярами tty.WriteStream класса, создаваемыми для процесса Node.js, и нет необходимости создавать дополнительные экземпляры.
Событие: 'resize'
Событие 'resize' генерируется всякий раз, когда изменяются свойства writeStream.columns или writeStream.rows. При вызове обработчик события не получает аргументов.
process.stdout.on('resize', () => {
console.log('screen size has changed!');
console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});
writeStream.clearLine(dir)
-
dir<number>-
-1— влево от курсора -
1— вправо от курсора -
0— вся строка
-
writeStream.clearLine() очищает текущую строку этого WriteStream в направлении, указанном в dir.
writeStream.clearScreenDown()
writeStream.clearScreenDown() очищает этот WriteStream от текущей позиции курсора вниз.
writeStream.columns
Значение типа number, определяющее количество столбцов в текущем TTY. Это свойство обновляется при каждом срабатывании события 'resize'.
writeStream.cursorTo(x, y)
writeStream.cursorTo() перемещает курсор этого WriteStream в указанную позицию.
writeStream.getColorDepth([env])
-
env<Object> Объект, содержащий переменные окружения для проверки. По умолчанию:process.env. - Возвращает: <number>
Возвращает:
-
1при поддержке 2 цветов, -
4при поддержке 16 цветов, -
8при поддержке 256 цветов, -
24при поддержке 16 777 216 цветов.
Используйте этот метод, чтобы определить, какие цвета поддерживает терминал. Из-за особенностей работы цветов в терминалах возможны как ложноположительные, так и ложноотрицательные результаты. Это зависит от информации о процессе и переменных среды, которые могут вводить в заблуждение относительно используемого терминала. Для обеспечения определённого поведения без обращения к process.env можно передать объект с различными настройками.
Используйте переменную среды NODE_DISABLE_COLORS для принудительного возвращения значения 1 этим методом.
writeStream.getWindowSize()
- Возвращает: <number[]>
Метод writeStream.getWindowSize() возвращает размер TTY, соответствующего этому WriteStream. Массив имеет тип [numColumns, numRows], где numColumns и numRows представляют количество столбцов и строк в соответствующем TTY.
writeStream.hasColors([count][, env])
-
count<integer> Количество запрашиваемых цветов (минимум 2). По умолчанию: 16. -
env<Object> Объект, содержащий переменные окружения для проверки. Это позволяет моделировать использование конкретного терминала. По умолчанию:process.env. - Возвращает: <boolean>
Возвращает true если writeStream поддерживает по крайней мере столько цветов, сколько указано в count. Минимальная поддержка — 2 (чёрный и белый).
У этого метода такие же ложноположительные и ложноотрицательные результаты, как и у writeStream.getColorDepth().
process.stdout.hasColors();
// Returns true or false depending on if `stdout` supports at least 16 colors.
process.stdout.hasColors(256);
// Returns true or false depending on if `stdout` supports at least 256 colors.
process.stdout.hasColors({ TMUX: '1' });
// Returns true.
process.stdout.hasColors(2 ** 24, { TMUX: '1' });
// Returns false (the environment setting pretends to support 2 ** 8 colors).
writeStream.isTTY
Значение типа boolean, которое всегда равно true.
writeStream.moveCursor(dx, dy)
writeStream.moveCursor() перемещает курсор этого WriteStream относительно его текущей позиции.
writeStream.rows
Значение типа number, определяющее количество строк в текущем TTY. Это свойство обновляется при каждом срабатывании события 'resize'.
tty.isatty(fd)[src]
-
fd<number> Числовой дескриптор файла
Метод tty.isatty() возвращает true если указанный fd связан с TTY и false в противном случае, в том числе когда fd не является целым числом больше или равным нулю.
© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/dist/latest-v10.x/docs/api/tty.html