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, и создавать дополнительные экземпляры не потребуется.
new tty.ReadStream(fd[, options])
-
fd<number> Дескриптор файла, связанный с TTY. -
options<Object> Параметры, передаваемые родительскомуnet.Socket; см.optionsконструктораnet.Socket. - Возвращает: <tty.ReadStream>
Создает ReadStream для fd, связанного с TTY.
new tty.WriteStream(fd)
-
fd<number> Дескриптор файла, связанный с TTY. - Возвращает: <tty.WriteStream>
Создает WriteStream для fd, связанного с TTY.
Событие: '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<number>-
-1: слева от курсора -
1: справа от курсора -
0: всю строку
-
-
callback<Function> Вызывается после завершения операции. - Возвращает: <boolean>
false, если поток хочет, чтобы вызывающий код дождался возникновения события'drain', прежде чем продолжить запись дополнительных данных; в противном случае —true.
writeStream.clearLine() очищает текущую строку этого WriteStream в направлении, заданном параметром dir.
writeStream.clearScreenDown([callback])
-
callback<Function> Вызывается после завершения операции. - Возвращает: <boolean>
false, если поток хочет, чтобы вызывающий код дождался возникновения события'drain', прежде чем продолжить запись дополнительных данных; в противном случае —true.
writeStream.clearScreenDown() очищает этот WriteStream от текущего положения курсора до конца.
writeStream.columns
Значение number указывает количество столбцов в текущем TTY. Это свойство обновляется при каждом возникновении события 'resize'.
writeStream.cursorTo(x[, y][, callback])
-
x<number> -
y<number> -
callback<Function> Вызывается после завершения операции. - Возвращает: <boolean>
false, если поток хочет, чтобы вызывающий код дождался возникновения события'drain', прежде чем продолжить запись дополнительных данных; в противном случае —true.
writeStream.cursorTo() перемещает курсор этого WriteStream в указанное положение.
writeStream.getColorDepth([env])
-
env<Object> Объект с переменными окружения для проверки. Это позволяет имитировать использование определенного терминала. По умолчанию: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()
- Возвращает: <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). copy
writeStream.isTTY
Значение boolean всегда равно true.
writeStream.moveCursor(dx, dy[, callback])
-
dx<number> -
dy<number> -
callback<Function> Вызывается после завершения операции. - Возвращает: <boolean>
false, если поток хочет, чтобы вызывающий код дождался возникновения события'drain', прежде чем продолжить запись дополнительных данных; в противном случае —true.
writeStream.moveCursor() перемещает курсор этого WriteStream относительно текущего положения.
writeStream.rows
Значение number указывает количество строк в текущем TTY. Это свойство обновляется при каждом возникновении события 'resize'.
tty.isatty(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-v24.x/docs/api/tty.html