Skip to content

TTY

[Stabile: 2 - Stabile]

Stabile: 2 Stabilità: 2 - Stabile

Codice Sorgente: lib/tty.js

Il modulo node:tty fornisce le classi tty.ReadStream e tty.WriteStream. Nella maggior parte dei casi, non sarà necessario o possibile utilizzare direttamente questo modulo. Tuttavia, è possibile accedervi utilizzando:

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

Quando Node.js rileva che viene eseguito con un terminale di testo ("TTY") collegato, process.stdin sarà, per impostazione predefinita, inizializzato come un'istanza di tty.ReadStream e sia process.stdout che process.stderr saranno, per impostazione predefinita, istanze di tty.WriteStream. Il metodo preferito per determinare se Node.js viene eseguito all'interno di un contesto TTY è verificare che il valore della proprietà process.stdout.isTTY sia true:

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

Nella maggior parte dei casi, non ci dovrebbe essere alcun motivo per un'applicazione di creare manualmente istanze delle classi tty.ReadStream e tty.WriteStream.

Classe: tty.ReadStream

Aggiunto in: v0.5.8

Rappresenta il lato leggibile di un TTY. In circostanze normali process.stdin sarà l'unica istanza di tty.ReadStream in un processo Node.js e non ci dovrebbe essere motivo di creare istanze aggiuntive.

readStream.isRaw

Aggiunto in: v0.7.7

Un booleano che è true se il TTY è attualmente configurato per funzionare come dispositivo raw.

Questo flag è sempre false quando un processo inizia, anche se il terminale sta funzionando in modalità raw. Il suo valore cambierà con le chiamate successive a setRawMode.

readStream.isTTY

Aggiunto in: v0.5.8

Un booleano che è sempre true per le istanze di tty.ReadStream.

readStream.setRawMode(mode)

Aggiunto in: v0.7.7

  • mode <boolean> Se true, configura tty.ReadStream per operare come dispositivo raw. Se false, configura tty.ReadStream per operare nella sua modalità predefinita. La proprietà readStream.isRaw sarà impostata sulla modalità risultante.
  • Restituisce: <this> L'istanza del flusso di lettura.

Consente la configurazione di tty.ReadStream in modo che operi come dispositivo raw.

In modalità raw, l'input è sempre disponibile carattere per carattere, escludendo i modificatori. Inoltre, tutta l'elaborazione speciale dei caratteri da parte del terminale è disabilitata, inclusa l'eco dei caratteri di input. + non causerà più un SIGINT in questa modalità.

Classe: tty.WriteStream

Aggiunto in: v0.5.8

Rappresenta il lato scrivibile di un TTY. In circostanze normali, process.stdout e process.stderr saranno le uniche istanze tty.WriteStream create per un processo Node.js e non ci dovrebbe essere motivo di creare istanze aggiuntive.

new tty.ReadStream(fd[, options])

[Cronologia]

VersioneModifiche
v0.9.4L'argomento options è supportato.
v0.5.8Aggiunto in: v0.5.8

Crea un ReadStream per fd associato a un TTY.

new tty.WriteStream(fd)

Aggiunto in: v0.5.8

Crea un WriteStream per fd associato a un TTY.

Evento: 'resize'

Aggiunto in: v0.7.7

L'evento 'resize' viene emesso ogni volta che una delle proprietà writeStream.columns o writeStream.rows cambia. Nessun argomento viene passato alla callback del listener quando viene chiamato.

js
process.stdout.on('resize', () => {
  console.log('Dimensione dello schermo cambiata!')
  console.log(`${process.stdout.columns}x${process.stdout.rows}`)
})

writeStream.clearLine(dir[, callback])

[Cronologia]

VersioneModifiche
v12.7.0La callback e il valore di ritorno di write() dello stream sono esposti.
v0.7.7Aggiunto in: v0.7.7
  • dir <number>

    • -1: a sinistra del cursore
    • 1: a destra del cursore
    • 0: l'intera riga
  • callback <Function> Invocato una volta completata l'operazione.

  • Restituisce: <boolean> false se lo stream desidera che il codice chiamante aspetti che l'evento 'drain' venga emesso prima di continuare a scrivere dati aggiuntivi; altrimenti true.

writeStream.clearLine() cancella la riga corrente di questo WriteStream nella direzione identificata da dir.

writeStream.clearScreenDown([callback])

[Cronologia]

VersioneModifiche
v12.7.0La callback e il valore di ritorno di write() dello stream sono esposti.
v0.7.7Aggiunto in: v0.7.7
  • callback <Function> Invocato una volta completata l'operazione.
  • Restituisce: <boolean> false se lo stream desidera che il codice chiamante aspetti che l'evento 'drain' venga emesso prima di continuare a scrivere dati aggiuntivi; altrimenti true.

writeStream.clearScreenDown() cancella questo WriteStream dal cursore corrente in giù.

writeStream.columns

Aggiunto in: v0.7.7

Un number che specifica il numero di colonne attualmente presenti nel TTY. Questa proprietà viene aggiornata ogni volta che viene emesso l'evento 'resize'.

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

[Cronologia]

VersioneModifiche
v12.7.0Il callback e il valore di ritorno di stream.write() sono esposti.
v0.7.7Aggiunto in: v0.7.7
  • x <number>
  • y <number>
  • callback <Function> Invocato una volta completata l'operazione.
  • Restituisce: <boolean> false se lo stream desidera che il codice chiamante attenda l'emissione dell'evento 'drain' prima di continuare a scrivere dati aggiuntivi; altrimenti true.

writeStream.cursorTo() sposta il cursore di questo WriteStream nella posizione specificata.

writeStream.getColorDepth([env])

Aggiunto in: v9.9.0

  • env <Object> Un oggetto contenente le variabili di ambiente da controllare. Questo permette di simulare l'utilizzo di uno specifico terminale. Default: process.env.
  • Restituisce: <number>

Restituisce:

  • 1 per 2,
  • 4 per 16,
  • 8 per 256,
  • 24 per 16.777.216 colori supportati.

Usare questo per determinare quali colori sono supportati dal terminale. A causa della natura dei colori nei terminali, è possibile avere falsi positivi o falsi negativi. Dipende dalle informazioni del processo e dalle variabili di ambiente che potrebbero fornire informazioni errate sul terminale utilizzato. È possibile passare un oggetto env per simulare l'utilizzo di uno specifico terminale. Questo può essere utile per verificare il comportamento di specifiche impostazioni ambientali.

Per imporre un supporto colore specifico, utilizzare una delle seguenti impostazioni ambientali.

  • 2 colori: FORCE_COLOR = 0 (Disabilita i colori)
  • 16 colori: FORCE_COLOR = 1
  • 256 colori: FORCE_COLOR = 2
  • 16.777.216 colori: FORCE_COLOR = 3

È anche possibile disabilitare il supporto del colore utilizzando le variabili di ambiente NO_COLOR e NODE_DISABLE_COLORS.

writeStream.getWindowSize()

Aggiunto in: v0.7.7

writeStream.getWindowSize() restituisce le dimensioni del TTY corrispondente a questo WriteStream. L'array è del tipo [numColumns, numRows] dove numColumns e numRows rappresentano il numero di colonne e righe nel TTY corrispondente.

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

Aggiunto in: v11.13.0, v10.16.0

  • count <integer> Il numero di colori richiesti (minimo 2). Default: 16.
  • env <Object> Un oggetto contenente le variabili di ambiente da controllare. Questo permette di simulare l'utilizzo di un terminale specifico. Default: process.env.
  • Restituisce: <boolean>

Restituisce true se writeStream supporta almeno tanti colori quanti quelli forniti in count. Il supporto minimo è 2 (bianco e nero).

Questo ha gli stessi falsi positivi e negativi descritti in writeStream.getColorDepth().

js
process.stdout.hasColors()
// Restituisce true o false a seconda che `stdout` supporti almeno 16 colori.
process.stdout.hasColors(256)
// Restituisce true o false a seconda che `stdout` supporti almeno 256 colori.
process.stdout.hasColors({ TMUX: '1' })
// Restituisce true.
process.stdout.hasColors(2 ** 24, { TMUX: '1' })
// Restituisce false (l'impostazione dell'ambiente finge di supportare 2 ** 8 colori).

writeStream.isTTY

Aggiunto in: v0.5.8

Un boolean che è sempre true.

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

[Cronologia]

VersioneCambiamenti
v12.7.0Il callback write() dello stream e il valore restituito sono esposti.
v0.7.7Aggiunto in: v0.7.7
  • dx <number>
  • dy <number>
  • callback <Function> Invocato una volta completata l'operazione.
  • Restituisce: <boolean> false se lo stream desidera che il codice chiamante aspetti che l'evento 'drain' venga emesso prima di continuare a scrivere dati aggiuntivi; altrimenti true.

writeStream.moveCursor() sposta il cursore di questo WriteStream relativamente alla sua posizione attuale.

writeStream.rows

Aggiunto in: v0.7.7

Un number che specifica il numero di righe che il TTY ha attualmente. Questa proprietà viene aggiornata ogni volta che viene emesso l'evento 'resize'.

tty.isatty(fd)

Aggiunto in: v0.5.8

Il metodo tty.isatty() restituisce true se il fd dato è associato a un TTY e false se non lo è, incluso quando fd non è un intero non negativo.