Spec-Zone.ru › Node.js 12 LTS

TTY

Стабильность: 2 - Стабильно

Исходный код: lib/tty.js

Модуль 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

Добавлен в: v0.5.8
  • Расширяет: <net.Socket>

Представляет собой читаемую сторону TTY. В обычных обстоятельствах process.stdin будет единственным экземпляром tty.ReadStream в процессе Node.js, и нет причин для создания дополнительных экземпляров.

readStream.isRaw

Добавлен в: v0.7.7

Логическое значение, равное true, если TTY в данный момент настроен для работы как сырое устройство. По умолчанию равно false.

readStream.isTTY

Добавлен в: v0.5.8

Логическое значение, которое всегда true для экземпляров tty.ReadStream.

readStream.setRawMode(mode)

Добавлен в: v0.7.7
  • mode <boolean> Если true, настраивает tty.ReadStream для работы как сырое устройство. Если false, настраивает tty.ReadStream в его стандартном режиме. Свойство readStream.isRaw будет установлено в полученный режим.
  • Возвращает: <this> Экземпляр потока чтения.

Позволяет настроить tty.ReadStream так, чтобы он работал как сырое устройство.

В сыром режиме входные данные всегда доступны посимвольно, без модификаторов. Кроме того, все специальная обработка символов терминалом, включая отображение ввода, отключается. CTRL+C больше не приведут к SIGINT в этом режиме.

Класс: tty.WriteStream

Добавлен в: v0.5.8
  • Расширяет: <net.Socket>

Представляет собой записываемую сторону TTY. В обычных обстоятельствах process.stdout и process.stderr будут единственными экземплярами tty.WriteStream для процесса Node.js, и нет причин для создания дополнительных экземпляров.

Событие: 'resize'

Добавлен в: v0.7.7

Событие '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[, callback])

История
Версия Изменения
v12.7.0

Обратный вызов и возвращаемое значение метода write() потока становятся доступными.

v0.7.7

Добавлен в: v0.7.7

  • dir <number>
    • -1: влево от курсора
    • 1: вправо от курсора
    • 0: вся строка
  • callback <Функция> Вызывается после завершения операции.
  • Возвращает: <boolean> false если поток желает, чтобы вызывающий код ожидал срабатывания события 'drain' перед продолжением записи дополнительных данных; в противном случае true.

writeStream.clearLine() очищает текущую строку этого WriteStream в направлении, указанном в dir.

writeStream.clearScreenDown([callback])

История
Версия Изменения
v12.7.0

Обратный вызов и возвращаемое значение метода write() потока становятся доступными.

v0.7.7

Добавлен в: v0.7.7

  • callback <Функция> Вызывается после завершения операции.
  • Возвращает: <boolean> false если поток желает, чтобы вызывающий код ожидал срабатывания события 'drain' перед продолжением записи дополнительных данных; в противном случае true.

writeStream.clearScreenDown() очищает этот WriteStream с текущего курсора вниз.

writeStream.columns

Добавлен в: v0.7.7

Целое число, определяющее количество столбцов, имеющихся у TTY в данный момент. Это свойство обновляется при каждом срабатывании события 'resize'.

writeStream.cursorTo(x[, y][, callback])

История
Версия Изменения
v12.7.0

Обратный вызов и возвращаемое значение метода write() потока становятся доступными.

v0.7.7

Добавлен в: v0.7.7

  • x <number>
  • y <number>
  • callback <Функция> Вызывается после завершения операции.
  • Возвращает: <boolean> false если поток желает, чтобы вызывающий код ожидал срабатывания события 'drain' перед продолжением записи дополнительных данных; в противном случае true.

writeStream.cursorTo() перемещает курсор этого WriteStream в указанную позицию.

writeStream.getColorDepth([env])

Добавлен в: v9.9.0
  • env <Объект> Объект, содержащий переменные окружения для проверки. Позволяет симулировать использование определенного терминала. По умолчанию: process.env.
  • Возвращает: <number>

Возвращает:

  • 1 для 2,
  • 4 для 16,
  • 8 для 256,
  • 24 для 16 777 216 поддерживаемых цветов.

Используйте это для определения, какие цвета поддерживает терминал. Из-за природы цветов в терминалах возможны как ложные срабатывания, так и ложные отрицания. Это зависит от информации о процессе и переменных среды, которые могут ошибочно указывать используемый терминал. Можно передать объект env для симуляции использования определенного терминала. Это может быть полезно для проверки поведения определенных настроек среды.

Для принудительного выбора определённой поддержки цветов используйте одну из указанных ниже настроек переменных окружения.

  • 2 цвета: FORCE_COLOR = 0 (Отключает цвета)
  • 16 цветов: FORCE_COLOR = 1
  • 256 цветов: FORCE_COLOR = 2
  • 16 777 216 цветов: FORCE_COLOR = 3

Отключение поддержки цвета также возможно с помощью переменных среды NO_COLOR и NODE_DISABLE_COLORS.

writeStream.getWindowSize()

Добавлен в: v0.7.7
  • Возвращает: <number[]>

writeStream.getWindowSize() возвращает размер TTY, соответствующий этому WriteStream. Массив имеет тип [numColumns, numRows], где numColumns и numRows представляют количество столбцов и строк в соответствующем TTY.

writeStream.hasColors([count][, env])

Добавлен в: v11.13.0
  • count <целое> Запрашиваемое количество цветов (минимум 2). По умолчанию: 16.
  • env <Объект> Объект, содержащий переменные окружения для проверки. Позволяет симулировать использование определенного терминала. По умолчанию: 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

Добавлен в: v0.5.8

A boolean that is always true.

writeStream.moveCursor(dx, dy[, callback])

История
Версия Изменения
v12.7.0

Выставлены обратный вызов и возвращаемое значение метода write() потока.

v0.7.7

Добавлена в: v0.7.7

  • dx <number>
  • dy <number>
  • callback <Функция> Вызывается после завершения операции.
  • Возвращает: <логическое значение> false если поток хочет, чтобы вызывающий код ожидал, пока событие 'drain' будет излучено, прежде чем продолжить запись дополнительных данных; в противном случае true.

writeStream.moveCursor() перемещает курсор этого WriteStream относительно его текущего положения.

writeStream.rows

Добавлена в: v0.7.7

Свойство, указывающее количество строк, имеющихся в текущем TTY. Это свойство обновляется при каждом излучении события 'resize'.

tty.isatty(fd)

Добавлена в: v0.5.8
  • fd <число> Числовой дескриптор файла
  • Возвращает: <логическое значение>

Метод 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-v12.x/docs/api/tty.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API