TTY
[Стабильно: 2 - Стабильно]
Стабильно: 2 Стабильность: 2 - Стабильно
Исходный код: lib/tty.js
Модуль node:tty
предоставляет классы tty.ReadStream
и tty.WriteStream
. В большинстве случаев использовать этот модуль напрямую не потребуется или не будет возможно. Тем не менее, к нему можно получить доступ с помощью:
const tty = require('node: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
Значение типа boolean
, равное true
, если TTY в настоящее время настроен на работу как необработанное устройство.
Этот флаг всегда равен false
при запуске процесса, даже если терминал работает в необработанном режиме. Его значение изменится после последующих вызовов setRawMode
.
readStream.isTTY
Добавлено в: v0.5.8
Значение типа boolean
, которое всегда равно true
для экземпляров tty.ReadStream
.
readStream.setRawMode(mode)
Добавлено в: v0.7.7
mode
<boolean> Еслиtrue
, настраиваетtty.ReadStream
для работы как raw-устройство. Еслиfalse
, настраиваетtty.ReadStream
для работы в режиме по умолчанию. СвойствоreadStream.isRaw
будет установлено в результирующий режим.- Возвращает: <this> Экземпляр потока чтения.
Позволяет настроить tty.ReadStream
так, чтобы он работал как raw-устройство.
В raw-режиме ввод всегда доступен посимвольно, без учета модификаторов. Кроме того, вся специальная обработка символов терминалом отключена, включая отображение вводимых символов. + больше не будет вызывать SIGINT
в этом режиме.
Класс: tty.WriteStream
Добавлено в: v0.5.8
- Расширяет: <net.Socket>
Представляет собой записываемую сторону TTY. В обычных условиях process.stdout
и process.stderr
будут единственными экземплярами tty.WriteStream
, созданными для процесса Node.js, и не должно быть причин создавать дополнительные экземпляры.
new tty.ReadStream(fd[, options])
[История]
Версия | Изменения |
---|---|
v0.9.4 | Поддерживается аргумент options . |
v0.5.8 | Добавлено в: v0.5.8 |
fd
<number> Дескриптор файла, связанный с TTY.options
<Object> Параметры, переданные родителюnet.Socket
, см.options
конструктораnet.Socket
.- Возвращает <tty.ReadStream>
Создает ReadStream
для fd
, связанного с TTY.
new tty.WriteStream(fd)
Добавлено в: v0.5.8
fd
<number> Дескриптор файла, связанный с TTY.- Возвращает <tty.WriteStream>
Создает WriteStream
для fd
, связанного с TTY.
Событие: 'resize'
Добавлено в: v0.7.7
Событие 'resize'
генерируется всякий раз, когда изменяется одно из свойств writeStream.columns
или writeStream.rows
. При вызове коллбэк-функции слушателя аргументы не передаются.
process.stdout.on('resize', () => {
console.log('Размер экрана изменился!')
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
<Function> Вызывается после завершения операции.Возвращаемое значение: <boolean>
false
, если поток ожидает, что вызывающий код будет ждать события'drain'
, прежде чем продолжить запись дополнительных данных; в противном случаеtrue
.
writeStream.clearLine()
очищает текущую строку этого WriteStream
в направлении, указанном dir
.
writeStream.clearScreenDown([callback])
[История]
Версия | Изменения |
---|---|
v12.7.0 | Колбэк и возвращаемое значение метода write() потока стали доступны. |
v0.7.7 | Добавлено в: v0.7.7 |
callback
<Function> Вызывается после завершения операции.- Возвращаемое значение: <boolean>
false
, если поток ожидает, что вызывающий код будет ждать события'drain'
, прежде чем продолжить запись дополнительных данных; в противном случаеtrue
.
writeStream.clearScreenDown()
очищает этот WriteStream
от текущего курсора вниз.
writeStream.columns
Добавлен в: v0.7.7
number
, указывающий количество столбцов, которые в данный момент имеет TTY. Это свойство обновляется всякий раз, когда генерируется событие 'resize'
.
writeStream.cursorTo(x[, y][, callback])
[История]
Версия | Изменения |
---|---|
v12.7.0 | Возвращаемое значение и обратный вызов write() потока стали доступны. |
v0.7.7 | Добавлено в: v0.7.7 |
x
<number>y
<number>callback
<Function> Вызывается после завершения операции.- Возвращает: <boolean>
false
, если поток желает, чтобы вызывающий код ожидал события'drain'
перед продолжением записи дополнительных данных; в противном случаеtrue
.
writeStream.cursorTo()
перемещает курсор этого WriteStream
в указанную позицию.
writeStream.getColorDepth([env])
Добавлен в: v9.9.0
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()
Добавлено в: v0.7.7
- Возвращает: <number[]>
writeStream.getWindowSize()
возвращает размер TTY, соответствующий этому WriteStream
. Массив имеет тип [numColumns, numRows]
, где numColumns
и numRows
представляют количество столбцов и строк в соответствующем TTY.
writeStream.hasColors([count][, env])
Добавлено в: v11.13.0, v10.16.0
count
<integer> Количество запрашиваемых цветов (минимум 2). По умолчанию: 16.env
<Object> Объект, содержащий переменные среды для проверки. Это позволяет имитировать использование определённого терминала. По умолчанию:process.env
.- Возвращает: <boolean>
Возвращает true
, если writeStream
поддерживает не менее того количества цветов, которое указано в count
. Минимальная поддержка — 2 (чёрный и белый).
Этот метод имеет те же ложные срабатывания и пропуски, что и описано в writeStream.getColorDepth()
.
process.stdout.hasColors()
// Возвращает true или false в зависимости от того, поддерживает ли `stdout` как минимум 16 цветов.
process.stdout.hasColors(256)
// Возвращает true или false в зависимости от того, поддерживает ли `stdout` как минимум 256 цветов.
process.stdout.hasColors({ TMUX: '1' })
// Возвращает true.
process.stdout.hasColors(2 ** 24, { TMUX: '1' })
// Возвращает false (настройка среды имитирует поддержку 2 ** 8 цветов).
writeStream.isTTY
Добавлено в: v0.5.8
boolean
, который всегда равен true
.
writeStream.moveCursor(dx, dy[, callback])
[История]
Версия | Изменения |
---|---|
v12.7.0 | Возвращается значение и вызывается обратный вызов write() потока. |
v0.7.7 | Добавлено в: v0.7.7 |
dx
<number>dy
<number>callback
<Function> Вызывается после завершения операции.- Возвращает: <boolean>
false
, если поток ожидает, что вызывающий код будет ждать события'drain'
, прежде чем продолжить запись дополнительных данных; в противном случаеtrue
.
writeStream.moveCursor()
перемещает курсор этого WriteStream
относительно его текущего положения.
writeStream.rows
Добавлен в: v0.7.7
number
, указывающий количество строк, имеющихся в данный момент в TTY. Это свойство обновляется всякий раз, когда возникает событие 'resize'
.
tty.isatty(fd)
Добавлен в: v0.5.8
Метод tty.isatty()
возвращает true
, если данный fd
связан с TTY, и false
, если нет, включая случаи, когда fd
не является неотрицательным целым числом.