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 è in esecuzione con un terminale di testo ("TTY") collegato, process.stdin verrà, 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 è in esecuzione 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 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 boolean che è true se il TTY è attualmente configurato per operare come un dispositivo raw.

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

readStream.isTTY

Aggiunto in: v0.5.8

Un boolean che è sempre true per le istanze tty.ReadStream.

readStream.setRawMode(mode)

Aggiunto in: v0.7.7

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

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

Quando si è in modalità raw, l'input è sempre disponibile carattere per carattere, senza includere 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 quando si è 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 per 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 le proprietà writeStream.columns o writeStream.rows sono state modificate. Nessun argomento viene passato alla funzione di callback del listener quando viene chiamata.

js
process.stdout.on('resize', () => {
  console.log('le dimensioni dello schermo sono cambiate!');
  console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});

writeStream.clearLine(dir[, callback])

[Cronologia]

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

    • -1: a sinistra dal cursore
    • 1: a destra dal cursore
    • 0: l'intera riga
  • callback <Function> Invocata al termine dell'operazione.

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

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

writeStream.clearScreenDown([callback])

[Cronologia]

VersioneModifiche
v12.7.0La funzione di callback e il valore di ritorno di write() dello stream sono esposti.
v0.7.7Aggiunto in: v0.7.7
  • callback <Function> Invocata al termine dell'operazione.
  • Restituisce: <boolean> false se lo stream desidera che il codice chiamante attenda 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 che il TTY ha attualmente. Questa proprietà viene aggiornata ogni volta che viene emesso l'evento 'resize'.

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

[Cronologia]

VersioneModifiche
v12.7.0Vengono esposti il callback e il valore di ritorno di write() dello stream.
v0.7.7Aggiunto in: v0.7.7
  • x <number>
  • y <number>
  • callback <Function> Invocata 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 d'ambiente da controllare. Questo consente di simulare l'utilizzo di un terminale specifico. Predefinito: process.env.
  • Restituisce: <number>

Restituisce:

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

Usalo per determinare quali colori supporta il terminale. A causa della natura dei colori nei terminali, è possibile avere falsi positivi o falsi negativi. Dipende dalle informazioni sul processo e dalle variabili d'ambiente che potrebbero mentire sul terminale utilizzato. È possibile passare un oggetto env per simulare l'utilizzo di un terminale specifico. Questo può essere utile per verificare come si comportano impostazioni ambientali specifiche.

Per forzare un supporto specifico del colore, usa 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 d'ambiente NO_COLOR e NODE_DISABLE_COLORS.

writeStream.getWindowSize()

Aggiunto in: v0.7.7

writeStream.getWindowSize() restituisce la dimensione 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). Predefinito: 16.
  • env <Object> Un oggetto contenente le variabili d'ambiente da controllare. Ciò consente di simulare l'utilizzo di un terminale specifico. Predefinito: process.env.
  • Restituisce: <boolean>

Restituisce true se writeStream supporta almeno tanti colori quanti sono 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]

VersioneModifiche
v12.7.0Sono esposti il callback e il valore di ritorno di write() dello stream.
v0.7.7Aggiunto in: v0.7.7
  • dx <number>
  • dy <number>
  • callback <Function> Richiamato 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.moveCursor() sposta il cursore di questo WriteStream relativamente alla sua posizione corrente.

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 dato fd è associato a un TTY e false se non lo è, incluso quando fd non è un intero non negativo.