Skip to content

TTY

[Stable: 2 - Stable]

Stable: 2 Stabilité: 2 - Stable

Code source: lib/tty.js

Le module node:tty fournit les classes tty.ReadStream et tty.WriteStream. Dans la plupart des cas, il ne sera ni nécessaire ni possible d'utiliser ce module directement. Cependant, il est accessible en utilisant :

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

Lorsque Node.js détecte qu'il est exécuté avec un terminal texte ("TTY") attaché, process.stdin sera, par défaut, initialisé comme une instance de tty.ReadStream et process.stdout et process.stderr seront, par défaut, des instances de tty.WriteStream. La méthode préférée pour déterminer si Node.js est exécuté dans un contexte TTY est de vérifier que la valeur de la propriété process.stdout.isTTY est true :

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

Dans la plupart des cas, il ne devrait y avoir que peu ou pas de raison pour qu'une application crée manuellement des instances des classes tty.ReadStream et tty.WriteStream.

Classe : tty.ReadStream

Ajoutée dans : v0.5.8

Représente le côté lisible d'un TTY. Dans des circonstances normales, process.stdin sera la seule instance tty.ReadStream dans un processus Node.js et il ne devrait y avoir aucune raison de créer des instances supplémentaires.

readStream.isRaw

Ajoutée dans : v0.7.7

Un boolean qui vaut true si le TTY est actuellement configuré pour fonctionner comme un périphérique brut.

Cet indicateur est toujours false lorsqu'un processus démarre, même si le terminal fonctionne en mode brut. Sa valeur changera avec les appels ultérieurs à setRawMode.

readStream.isTTY

Ajoutée dans : v0.5.8

Un boolean qui est toujours true pour les instances tty.ReadStream.

readStream.setRawMode(mode)

Ajouté dans : v0.7.7

  • mode <boolean> Si true, configure le tty.ReadStream pour qu'il fonctionne comme un périphérique brut. Si false, configure le tty.ReadStream pour qu'il fonctionne dans son mode par défaut. La propriété readStream.isRaw sera définie sur le mode résultant.
  • Retourne : <this> L'instance du flux de lecture.

Permet la configuration de tty.ReadStream afin qu'il fonctionne comme un périphérique brut.

En mode brut, l'entrée est toujours disponible caractère par caractère, sans inclure les modificateurs. De plus, tout traitement spécial des caractères par le terminal est désactivé, y compris l'écho des caractères d'entrée. + ne provoquera plus de SIGINT dans ce mode.

Classe : tty.WriteStream

Ajouté dans : v0.5.8

Représente le côté accessible en écriture d’un TTY. Dans des circonstances normales, process.stdout et process.stderr seront les seules instances de tty.WriteStream créées pour un processus Node.js et il ne devrait y avoir aucune raison de créer des instances supplémentaires.

new tty.ReadStream(fd[, options])

[Historique]

VersionModifications
v0.9.4L'argument options est pris en charge.
v0.5.8Ajouté dans : v0.5.8

Crée un ReadStream pour fd associé à un TTY.

new tty.WriteStream(fd)

Ajouté dans : v0.5.8

Crée un WriteStream pour fd associé à un TTY.

Événement : 'resize'

Ajouté dans : v0.7.7

L'événement 'resize' est émis chaque fois que l'une des propriétés writeStream.columns ou writeStream.rows a changé. Aucun argument n'est passé à la fonction de rappel de l'écouteur lorsqu'elle est appelée.

js
process.stdout.on('resize', () => {
  console.log('la taille de l\'écran a changé !');
  console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});

writeStream.clearLine(dir[, callback])

[Historique]

VersionModifications
v12.7.0La fonction de rappel et la valeur de retour de write() du flux sont exposées.
v0.7.7Ajouté dans : v0.7.7
  • dir <number>

    • -1 : à gauche du curseur
    • 1 : à droite du curseur
    • 0 : toute la ligne
  • callback <Function> Invoquée une fois l'opération terminée.

  • Retourne : <boolean> false si le flux souhaite que le code appelant attende que l'événement 'drain' soit émis avant de continuer à écrire des données supplémentaires ; sinon true.

writeStream.clearLine() efface la ligne actuelle de ce WriteStream dans une direction identifiée par dir.

writeStream.clearScreenDown([callback])

[Historique]

VersionModifications
v12.7.0La fonction de rappel et la valeur de retour de write() du flux sont exposées.
v0.7.7Ajouté dans : v0.7.7
  • callback <Function> Invoquée une fois l'opération terminée.
  • Retourne : <boolean> false si le flux souhaite que le code appelant attende que l'événement 'drain' soit émis avant de continuer à écrire des données supplémentaires ; sinon true.

writeStream.clearScreenDown() efface ce WriteStream du curseur actuel vers le bas.

writeStream.columns

Ajouté dans : v0.7.7

Un number spécifiant le nombre de colonnes que le TTY possède actuellement. Cette propriété est mise à jour chaque fois que l'événement 'resize' est émis.

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

[Historique]

VersionModifications
v12.7.0Le rappel et la valeur de retour de write() du stream sont exposés.
v0.7.7Ajouté dans : v0.7.7
  • x <number>
  • y <number>
  • callback <Function> Invoked once the operation completes.
  • Retourne : <boolean> false si le stream souhaite que le code appelant attende que l'événement 'drain' soit émis avant de continuer à écrire des données supplémentaires ; sinon, true.

writeStream.cursorTo() déplace le curseur de ce WriteStream à la position spécifiée.

writeStream.getColorDepth([env])

Ajouté dans : v9.9.0

  • env <Object> Un objet contenant les variables d'environnement à vérifier. Ceci permet de simuler l'utilisation d'un terminal spécifique. Par défaut : process.env.
  • Retourne : <number>

Retourne :

  • 1 pour 2,
  • 4 pour 16,
  • 8 pour 256,
  • 24 pour 16 777 216 couleurs supportées.

Utilisez ceci pour déterminer quelles couleurs le terminal prend en charge. En raison de la nature des couleurs dans les terminaux, il est possible d'avoir des faux positifs ou des faux négatifs. Cela dépend des informations du processus et des variables d'environnement qui peuvent mentir sur le terminal utilisé. Il est possible de transmettre un objet env pour simuler l'utilisation d'un terminal spécifique. Cela peut être utile pour vérifier le comportement de paramètres d'environnement spécifiques.

Pour forcer une prise en charge spécifique des couleurs, utilisez l'un des paramètres d'environnement ci-dessous.

  • 2 couleurs : FORCE_COLOR = 0 (désactive les couleurs)
  • 16 couleurs : FORCE_COLOR = 1
  • 256 couleurs : FORCE_COLOR = 2
  • 16 777 216 couleurs : FORCE_COLOR = 3

La désactivation de la prise en charge des couleurs est également possible en utilisant les variables d'environnement NO_COLOR et NODE_DISABLE_COLORS.

writeStream.getWindowSize()

Ajouté dans : v0.7.7

writeStream.getWindowSize() renvoie la taille du TTY correspondant à ce WriteStream. Le tableau est du type [numColumns, numRows]numColumns et numRows représentent le nombre de colonnes et de lignes dans le TTY correspondant.

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

Ajouté dans : v11.13.0, v10.16.0

  • count <integer> Le nombre de couleurs demandées (minimum 2). Par défaut : 16.
  • env <Object> Un objet contenant les variables d'environnement à vérifier. Cela permet de simuler l'utilisation d'un terminal spécifique. Par défaut : process.env.
  • Retourne : <boolean>

Retourne true si le writeStream prend en charge au moins autant de couleurs que celles fournies dans count. La prise en charge minimale est de 2 (noir et blanc).

Cela a les mêmes faux positifs et faux négatifs que ceux décrits dans writeStream.getColorDepth().

js
process.stdout.hasColors();
// Retourne true ou false selon que `stdout` prend en charge au moins 16 couleurs.
process.stdout.hasColors(256);
// Retourne true ou false selon que `stdout` prend en charge au moins 256 couleurs.
process.stdout.hasColors({ TMUX: '1' });
// Retourne true.
process.stdout.hasColors(2 ** 24, { TMUX: '1' });
// Retourne false (le paramètre d'environnement prétend prendre en charge 2 ** 8 couleurs).

writeStream.isTTY

Ajouté dans : v0.5.8

Un boolean qui est toujours true.

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

[Historique]

VersionModifications
v12.7.0Le rappel et la valeur de retour write() du flux sont exposés.
v0.7.7Ajouté dans : v0.7.7
  • dx <number>
  • dy <number>
  • callback <Function> Invoqué une fois l'opération terminée.
  • Retourne : <boolean> false si le flux souhaite que le code appelant attende que l'événement 'drain' soit émis avant de continuer à écrire des données supplémentaires ; sinon true.

writeStream.moveCursor() déplace le curseur de ce WriteStream par rapport à sa position actuelle.

writeStream.rows

Ajouté dans : v0.7.7

Un number spécifiant le nombre de lignes que le TTY a actuellement. Cette propriété est mise à jour chaque fois que l'événement 'resize' est émis.

tty.isatty(fd)

Ajouté dans : v0.5.8

La méthode tty.isatty() renvoie true si le fd donné est associé à un TTY et false s'il ne l'est pas, y compris lorsque fd n'est pas un entier non négatif.