TTY
Исходный код: lib/tty.js
Модуль node:tty предоставляет классы tty.ReadStream и tty.WriteStream. В большинстве случаев использование этого модуля напрямую не потребуется или не будет возможно. Однако к нему можно получить доступ, используя:
const tty = require('node:tty'); copy Когда 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 copy
В большинстве случаев у приложения нет необходимости создавать экземпляры классов tty.ReadStream и tty.WriteStream вручную.
Класс: tty.ReadStream
- Расширяет: <net.Socket>
Представляет собой читаемую часть TTY. В обычных обстоятельствах process.stdin будет единственным экземпляром tty.ReadStream в процессе Node.js, и нет необходимости создавать дополнительные экземпляры.
readStream.isRaw
Значение boolean, равное true, если TTY в настоящее время настроен для работы как устройство в сыром режиме.
Этот флаг всегда false при запуске процесса, даже если терминал работает в сыром режиме. Его значение изменится при последующих вызовах setRawMode.
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
- Расширяет: <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}`);
}); copy
writeStream.clearLine(dir[, callback])
-
dir<число>-
-1: влево от курсора -
1: вправо от курсора -
0: вся строка
-
-
callback<Функция> Вызывается по завершении операции. - Возвращает: <логическое>
falseесли поток хочет, чтобы вызывающий код ждал события'drain'перед продолжением записи дополнительных данных; в противном случаеtrue.
writeStream.clearLine() очищает текущую строку этого WriteStream в направлении, указанном dir.
writeStream.clearScreenDown([callback])
-
callback<Функция> Вызывается по завершении операции. - Возвращает: <логическое>
falseесли поток хочет, чтобы вызывающий код ждал события'drain'перед продолжением записи дополнительных данных; в противном случаеtrue.
writeStream.clearScreenDown() очищает этот WriteStream от текущего курсора вниз.
writeStream.columns
Значение, указывающее количество столбцов в текущем TTY. Это свойство обновляется всякий раз, когда генерируется событие 'resize'.
writeStream.cursorTo(x[, y][, callback])
-
x<число> -
y<число> -
callback<Функция> Вызывается по завершении операции. - Возвращает: <логическое>
falseесли поток хочет, чтобы вызывающий код ждал события'drain'перед продолжением записи дополнительных данных; в противном случаеtrue.
writeStream.cursorTo() перемещает курсор этого WriteStream в указанную позицию.
writeStream.getColorDepth([env])
-
env<Объект> Объект, содержащий переменные окружения для проверки. Это позволяет моделировать использование определённого терминала. По умолчанию:process.env. - Возвращает: <число>
Возвращает:
-
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()
- Возвращает: <массив чисел>
writeStream.getWindowSize() возвращает размер TTY, соответствующего этому WriteStream. Массив типа [numColumns, numRows], где numColumns и numRows представляют количество столбцов и строк в соответствующем TTY.
writeStream.hasColors([count][, env])
-
count<целое число> Запрашиваемое количество цветов (минимум 2). По умолчанию: 16. -
env<Объект> Объект, содержащий переменные окружения для проверки. Это позволяет моделировать использование определённого терминала. По умолчанию:process.env. - Возвращает: <логическое>
Возвращает 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). copy
writeStream.isTTY
Значение boolean, которое всегда true.
writeStream.moveCursor(dx, dy[, callback])
-
dx<число> -
dy<число> -
callback<Функция> Вызывается по завершении операции. - Возвращает: <логическое>
falseесли поток хочет, чтобы вызывающий код ждал события'drain'перед продолжением записи дополнительных данных; в противном случаеtrue.
writeStream.moveCursor() перемещает курсор этого WriteStream относительно его текущей позиции.
writeStream.rows
Значение, указывающее количество строк в текущем TTY. Это свойство обновляется всякий раз, когда генерируется событие 'resize'.
tty.isatty(fd)
-
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/api/tty.html