Skip to content

TTY

[Estable: 2 - Estable]

Estable: 2 Estabilidad: 2 - Estable

Código Fuente: lib/tty.js

El módulo node:tty proporciona las clases tty.ReadStream y tty.WriteStream. En la mayoría de los casos, no será necesario ni posible utilizar este módulo directamente. Sin embargo, se puede acceder a él usando:

js
const tty = require('node:tty');

Cuando Node.js detecta que se está ejecutando con una terminal de texto ("TTY") adjunta, process.stdin se inicializará, de forma predeterminada, como una instancia de tty.ReadStream y tanto process.stdout como process.stderr serán, de forma predeterminada, instancias de tty.WriteStream. El método preferido para determinar si Node.js se está ejecutando dentro de un contexto TTY es verificar que el valor de la propiedad process.stdout.isTTY sea true:

bash
$ node -p -e "Boolean(process.stdout.isTTY)"
true
$ node -p -e "Boolean(process.stdout.isTTY)" | cat
false

En la mayoría de los casos, no debería haber ninguna razón para que una aplicación cree manualmente instancias de las clases tty.ReadStream y tty.WriteStream.

Clase: tty.ReadStream

Agregado en: v0.5.8

Representa el lado legible de un TTY. En circunstancias normales, process.stdin será la única instancia de tty.ReadStream en un proceso de Node.js y no debería haber ninguna razón para crear instancias adicionales.

readStream.isRaw

Agregado en: v0.7.7

Un boolean que es true si el TTY está configurado actualmente para operar como un dispositivo raw.

Este indicador siempre es false cuando se inicia un proceso, incluso si la terminal está operando en modo raw. Su valor cambiará con las llamadas posteriores a setRawMode.

readStream.isTTY

Agregado en: v0.5.8

Un boolean que siempre es true para las instancias de tty.ReadStream.

readStream.setRawMode(mode)

Agregado en: v0.7.7

  • mode <boolean> Si es true, configura el tty.ReadStream para que funcione como un dispositivo raw. Si es false, configura el tty.ReadStream para que funcione en su modo predeterminado. La propiedad readStream.isRaw se establecerá en el modo resultante.
  • Devuelve: <this> La instancia de la secuencia de lectura.

Permite la configuración de tty.ReadStream para que funcione como un dispositivo raw.

Cuando está en modo raw, la entrada siempre está disponible carácter por carácter, sin incluir los modificadores. Además, todo el procesamiento especial de caracteres por parte del terminal está deshabilitado, incluido el eco de los caracteres de entrada. + ya no causará un SIGINT cuando esté en este modo.

Clase: tty.WriteStream

Agregado en: v0.5.8

Representa el lado de escritura de un TTY. En circunstancias normales, process.stdout y process.stderr serán las únicas instancias de tty.WriteStream creadas para un proceso de Node.js y no debería haber ninguna razón para crear instancias adicionales.

new tty.ReadStream(fd[, options])

[Historial]

VersiónCambios
v0.9.4El argumento options es soportado.
v0.5.8Agregado en: v0.5.8

Crea un ReadStream para fd asociado con un TTY.

new tty.WriteStream(fd)

Agregado en: v0.5.8

Crea un WriteStream para fd asociado con un TTY.

Evento: 'resize'

Agregado en: v0.7.7

El evento 'resize' se emite siempre que cambian las propiedades writeStream.columns o writeStream.rows. No se pasan argumentos a la función de callback del listener cuando se llama.

js
process.stdout.on('resize', () => {
  console.log('¡el tamaño de la pantalla ha cambiado!');
  console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});

writeStream.clearLine(dir[, callback])

[Historial]

VersiónCambios
v12.7.0Se exponen la función de callback y el valor de retorno de write() del stream.
v0.7.7Agregado en: v0.7.7
  • dir <number>

    • -1: a la izquierda del cursor
    • 1: a la derecha del cursor
    • 0: toda la línea
  • callback <Function> Se invoca una vez que se completa la operación.

  • Devuelve: <boolean> false si el stream desea que el código que llama espere a que se emita el evento 'drain' antes de continuar escribiendo datos adicionales; de lo contrario, true.

writeStream.clearLine() borra la línea actual de este WriteStream en una dirección identificada por dir.

writeStream.clearScreenDown([callback])

[Historial]

VersiónCambios
v12.7.0Se exponen la función de callback y el valor de retorno de write() del stream.
v0.7.7Agregado en: v0.7.7
  • callback <Function> Se invoca una vez que se completa la operación.
  • Devuelve: <boolean> false si el stream desea que el código que llama espere a que se emita el evento 'drain' antes de continuar escribiendo datos adicionales; de lo contrario, true.

writeStream.clearScreenDown() borra este WriteStream desde el cursor actual hacia abajo.

writeStream.columns

Agregado en: v0.7.7

Un number que especifica el número de columnas que tiene actualmente el TTY. Esta propiedad se actualiza cada vez que se emite el evento 'resize'.

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

[Historial]

VersiónCambios
v12.7.0Se exponen la función de retrollamada write() y el valor de retorno del stream.
v0.7.7Agregado en: v0.7.7
  • x <number>
  • y <number>
  • callback <Function> Se invoca una vez que se completa la operación.
  • Devuelve: <boolean> false si el stream desea que el código que llama espere a que se emita el evento 'drain' antes de continuar escribiendo datos adicionales; de lo contrario, true.

writeStream.cursorTo() mueve el cursor de este WriteStream a la posición especificada.

writeStream.getColorDepth([env])

Agregado en: v9.9.0

  • env <Object> Un objeto que contiene las variables de entorno para verificar. Esto permite simular el uso de un terminal específico. Predeterminado: process.env.
  • Devuelve: <number>

Devuelve:

  • 1 para 2,
  • 4 para 16,
  • 8 para 256,
  • 24 para 16,777,216 colores admitidos.

Úselo para determinar qué colores admite el terminal. Debido a la naturaleza de los colores en los terminales, es posible tener falsos positivos o falsos negativos. Depende de la información del proceso y las variables de entorno que pueden mentir sobre qué terminal se está utilizando. Es posible pasar un objeto env para simular el uso de un terminal específico. Esto puede ser útil para verificar cómo se comportan configuraciones de entorno específicas.

Para forzar una compatibilidad de color específica, utilice una de las siguientes configuraciones de entorno.

  • 2 colores: FORCE_COLOR = 0 (Desactiva los colores)
  • 16 colores: FORCE_COLOR = 1
  • 256 colores: FORCE_COLOR = 2
  • 16,777,216 colores: FORCE_COLOR = 3

También es posible desactivar la compatibilidad con colores mediante las variables de entorno NO_COLOR y NODE_DISABLE_COLORS.

writeStream.getWindowSize()

Agregado en: v0.7.7

writeStream.getWindowSize() regresa el tamaño de la TTY correspondiente a este WriteStream. El array es del tipo [numColumns, numRows] donde numColumns y numRows representan el número de columnas y filas en la TTY correspondiente.

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

Agregado en: v11.13.0, v10.16.0

  • count <integer> El número de colores que se solicitan (mínimo 2). Predeterminado: 16.
  • env <Object> Un objeto que contiene las variables de entorno para verificar. Esto permite simular el uso de una terminal específica. Predeterminado: process.env.
  • Regresa: <boolean>

Regresa true si el writeStream soporta al menos tantos colores como los provistos en count. El soporte mínimo es 2 (blanco y negro).

Esto tiene los mismos falsos positivos y negativos como se describe en writeStream.getColorDepth().

js
process.stdout.hasColors();
// Regresa true o false dependiendo de si `stdout` soporta al menos 16 colores.
process.stdout.hasColors(256);
// Regresa true o false dependiendo de si `stdout` soporta al menos 256 colores.
process.stdout.hasColors({ TMUX: '1' });
// Regresa true.
process.stdout.hasColors(2 ** 24, { TMUX: '1' });
// Regresa false (la configuración del entorno pretende soportar 2 ** 8 colores).

writeStream.isTTY

Agregado en: v0.5.8

Un boolean que siempre es true.

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

[Historia]

VersiónCambios
v12.7.0El callback de write() y el valor de retorno del stream están expuestos.
v0.7.7Agregado en: v0.7.7
  • dx <number>
  • dy <number>
  • callback <Function> Invocado una vez que la operación se completa.
  • Regresa: <boolean> false si el stream desea que el código de llamada espere a que el evento 'drain' sea emitido antes de continuar escribiendo datos adicionales; de lo contrario true.

writeStream.moveCursor() mueve el cursor de este WriteStream relativo a su posición actual.

writeStream.rows

Agregado en: v0.7.7

Un number que especifica el número de filas que tiene actualmente el TTY. Esta propiedad se actualiza cada vez que se emite el evento 'resize'.

tty.isatty(fd)

Agregado en: v0.5.8

El método tty.isatty() devuelve true si el fd dado está asociado con un TTY y false si no lo está, incluyendo cuando fd no es un entero no negativo.