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:
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
:
$ 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
- Extiende: <net.Socket>
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 estrue
, configura eltty.ReadStream
para operar como un dispositivo raw. Si esfalse
, configura eltty.ReadStream
para operar en su modo predeterminado. La propiedadreadStream.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
- Extiende: <net.Socket>
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ón | Cambios |
---|---|
v0.9.4 | Se admite el argumento options . |
v0.5.8 | Agregado en: v0.5.8 |
fd
<number> Un descriptor de archivo asociado con un TTY.options
<Object> Opciones pasadas al padrenet.Socket
, veroptions
del constructor denet.Socket
.- Devuelve <tty.ReadStream>
Crea un ReadStream
para fd
asociado con un TTY.
new tty.WriteStream(fd)
Agregado en: v0.5.8
fd
<number> Un descriptor de archivo asociado con un TTY.- Devuelve <tty.WriteStream>
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.
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ón | Cambios |
---|---|
v12.7.0 | Se exponen la función de devolución de llamada y el valor de retorno de write() de la secuencia. |
v0.7.7 | Agregado en: v0.7.7 |
dir
<number>-1
: a la izquierda del cursor1
: a la derecha del cursor0
: 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ón | Cambios |
---|---|
v12.7.0 | Se exponen la devolución de llamada y el valor de retorno de write() del stream. |
v0.7.7 | Añ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ón | Cambios |
---|---|
v12.7.0 | Se exponen la devolución de llamada y el valor de retorno de write() del stream. |
v0.7.7 | Añ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
- Devuelve: <number[]>
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()
.
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ón | Cambios |
---|---|
v12.7.0 | Se exponen la devolución de llamada write() y el valor de retorno del flujo. |
v0.7.7 | Agregado 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.