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 utilizando:

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

Cuando Node.js detecta que se está ejecutando con un terminal de texto ("TTY") conectado, process.stdin se inicializará, por defecto, como una instancia de tty.ReadStream y tanto process.stdout como process.stderr serán, por defecto, instancias de tty.WriteStream. El método preferido para determinar si Node.js se está ejecutando dentro de un contexto TTY es comprobar que el valor de la propiedad process.stdout.isTTY es 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.

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

readStream.isTTY

Agregado en: v0.5.8

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

readStream.setRawMode(mode)

Agregado en: v0.7.7

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

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

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

Clase: tty.WriteStream

Agregado en: v0.5.8

Representa el lado grabable 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.4Se admite el argumento options.
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 cada vez que cambian las propiedades writeStream.columns o writeStream.rows. No se pasan argumentos a la función de devolución de llamada 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 devolución de llamada y el valor de retorno de write() de la secuencia.
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 la operación se completa.

  • Devuelve: <boolean> false si la secuencia desea que el código de llamada 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 devolución de llamada y el valor de retorno de write() del stream.
v0.7.7Añadido en: v0.7.7
  • callback <Function> Se invoca una vez que la operación se completa.
  • 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; en caso contrario, true.

writeStream.clearScreenDown() borra este WriteStream desde la posición actual del cursor hacia abajo.

writeStream.columns

Añadido 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 devolución de llamada y el valor de retorno de write() del stream.
v0.7.7Añadido en: v0.7.7
  • x <number>
  • y <number>
  • callback <Function> Se invoca una vez que la operación se completa.
  • 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; en caso contrario, true.

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

writeStream.getColorDepth([env])

Agregado en: v9.9.0

  • env <Objeto> Un objeto que contiene las variables de entorno a verificar. Esto permite simular el uso de un terminal específico. Predeterminado: process.env.
  • Devuelve: <número>

Devuelve:

  • 1 para 2,
  • 4 para 16,
  • 8 para 256,
  • 24 para 16.777.216 colores soportados.

Utilice esto 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 de 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 un soporte de color específico, 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 deshabilitar la compatibilidad con colores utilizando las variables de entorno NO_COLOR y NODE_DISABLE_COLORS.

writeStream.getWindowSize()

Agregado en: v0.7.7

writeStream.getWindowSize() devuelve el tamaño del 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 el 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 a verificar. Esto permite simular el uso de un terminal específico. Predeterminado: process.env.
  • Devuelve: <boolean>

Devuelve true si el writeStream admite al menos tantos colores como se proporcionan en count. El soporte mínimo es de 2 (blanco y negro).

Esto tiene los mismos falsos positivos y negativos que se describen en writeStream.getColorDepth().

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

writeStream.isTTY

Agregado en: v0.5.8

Un boolean que siempre es true.

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

[Historial]

VersiónCambios
v12.7.0Se exponen la devolución de llamada write() y el valor de retorno del flujo.
v0.7.7Agregado en: v0.7.7
  • dx <number>
  • dy <number>
  • callback <Function> Se invoca una vez que se completa la operación.
  • Devuelve: <boolean> false si el flujo 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.moveCursor() mueve el cursor de este WriteStream relativo a su posición actual.

writeStream.rows

Añadido 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)

Añadido 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á, incluso cuando fd no es un entero no negativo.