tty
Модуль node:tty предоставляет классы tty.ReadStream и tty.WriteStream. В большинстве случаев использовать этот модуль напрямую не потребуется или будет невозможно. Однако к нему можно обратиться с помощью:
import tty from '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.
Использование в Deno
import * as mod from "node:tty";
класс ReadStream
Использование в Deno
import { ReadStream } from "node:tty";
Представляет читаемую сторону TTY. В обычных обстоятельствах process.stdin будет единственным экземпляром tty.ReadStream в процессе Node.js, и создавать дополнительные экземпляры не потребуется.
Конструкторы
ReadStream(
fd: number,
options?: net.SocketConstructorOpts,
) Свойства
isRaw: boolean Значение boolean равно true, если TTY в данный момент настроен для работы в качестве необработанного устройства.
При запуске процесса этот флаг всегда имеет значение false, даже если терминал работает в необработанном режиме. Его значение изменяется при последующих вызовах setRawMode.
isTTY: boolean Значение boolean для экземпляров tty.ReadStream всегда равно true.
Методы
setRawMode(mode: boolean): this Позволяет настроить tty.ReadStream для работы в качестве необработанного устройства.
В необработанном режиме ввод всегда доступен посимвольно, без учета модификаторов. Кроме того, отключается вся специальная обработка символов терминалом, включая отображение введенных символов. В этом режиме Ctrl+C больше не вызывает SIGINT.
класс WriteStream
Использование в Deno
import { WriteStream } from "node:tty";
Представляет записываемую сторону TTY. В обычных обстоятельствах process.stdout и process.stderr будут единственными экземплярами tty.WriteStream, создаваемыми для процесса Node.js, и создавать дополнительные экземпляры не потребуется.
Конструкторы
WriteStream(fd: number) Свойства
columns: number Значение number указывает количество столбцов в текущем TTY. Это свойство обновляется при каждом возникновении события 'resize'.
isTTY: boolean Значение boolean всегда равно true.
rows: number Значение number указывает количество строк в текущем TTY. Это свойство обновляется при каждом возникновении события 'resize'.
Методы
addListener(
event: string,
listener: (...args: any[]) => void,
): this addListener(
event: "resize",
listener: () => void,
): this writeStream.clearLine() очищает текущую строку этого WriteStream в направлении, заданном параметром dir.
clearScreenDown(callback?: () => void): boolean writeStream.clearScreenDown() очищает этот WriteStream от текущего положения курсора вниз.
cursorTo(
x: number,
y?: number,
callback?: () => void,
): boolean writeStream.cursorTo() перемещает курсор этого WriteStream в указанную позицию.
cursorTo(
x: number,
callback: () => void,
): boolean emit(
event: string | symbol,
...args: any[],
): boolean emit(event: "resize"): boolean getColorDepth(env?: object): 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.
getWindowSize(): [number, number] writeStream.getWindowSize() возвращает размер TTY, соответствующего этому WriteStream. Массив имеет тип [numColumns, numRows], где numColumns и numRows обозначают количество столбцов и строк в соответствующем TTY.
hasColors(count?: number): 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).
hasColors(env?: object): boolean hasColors(
count: number,
env?: object,
): boolean moveCursor(
dx: number,
dy: number,
callback?: () => void,
): boolean writeStream.moveCursor() перемещает курсор этого WriteStream относительно его текущего положения.
on(
event: string,
listener: (...args: any[]) => void,
): this on(
event: "resize",
listener: () => void,
): this once(
event: string,
listener: (...args: any[]) => void,
): this once(
event: "resize",
listener: () => void,
): this prependListener(
event: string,
listener: (...args: any[]) => void,
): this prependListener(
event: "resize",
listener: () => void,
): this prependOnceListener(
event: string,
listener: (...args: any[]) => void,
): this prependOnceListener(
event: "resize",
listener: () => void,
): this функция isatty
Использование в Deno
import { isatty } from "node:tty";
isatty(fd: number): booleanМетод tty.isatty() возвращает true, если указанный fd связан с TTY, и false в противном случае, в том числе если fd не является неотрицательным целым числом.
Параметры
fd: number Числовой файловый дескриптор
Тип возвращаемого значения
boolean псевдоним типа Direction
Использование в Deno
import { type Direction } from "node:tty";
-1 — влево от курсора, 0 — вся строка, 1 — вправо от курсора
Определение
-1
| 0
| 1
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/node/tty