Skip to content

TTY

[Stable : 2 - Stable]

Stable : 2 Stability : 2 - Stable

Source Code : lib/tty.js

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

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 consiste à 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 n'y aura pratiquement aucune raison pour une application de créer manuellement des instances des classes tty.ReadStream et tty.WriteStream.

Class: tty.ReadStream

Ajouté 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 d'en créer d'autres.

readStream.isRaw

Ajouté dans : v0.7.7

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

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

readStream.isTTY

Ajouté dans : v0.5.8

Un booléen qui est toujours true pour les instances tty.ReadStream.

readStream.setRawMode(mode)

Ajouté dans : v0.7.7

  • mode <booléen> Si true, configure tty.ReadStream pour fonctionner comme un périphérique brut. Si false, configure tty.ReadStream pour fonctionner en 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, la saisie est toujours disponible caractère par caractère, sans les modificateurs. De plus, tout traitement spécial des caractères par le terminal est désactivé, y compris l'écho des caractères de saisie. + ne provoquera plus de SIGINT en ce mode.

Classe : tty.WriteStream

Ajouté dans : v0.5.8

Représente le côté inscriptible d'un TTY. Dans des circonstances normales, process.stdout et process.stderr seront les seules instances 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 les propriétés writeStream.columns ou writeStream.rows changent. 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: vers la gauche du curseur
    • 1: vers la droite du curseur
    • 0: toute la ligne
  • callback <Function> Appelée une fois l'opération terminée.

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

writeStream.clearLine() efface la ligne actuelle de ce WriteStream dans la 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> Appelée une fois l'opération terminée.
  • Retourne : <boolean> false si le flux souhaite que le code appelant attende l'émission de l'événement 'drain' avant de continuer à écrire des données supplémentaires ; sinon true.

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

writeStream.columns

Ajouté dans : v0.7.7

Un nombre 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 flux sont exposés.
v0.7.7Ajouté dans : v0.7.7
  • x <nombre>
  • y <nombre>
  • callback <Fonction> Invoqué une fois l'opération terminée.
  • Retourne : <booléen> 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.cursorTo() déplace le curseur de ce WriteStream à la position spécifiée.

writeStream.getColorDepth([env])

Ajouté dans : v9.9.0

  • env <Objet> Un objet contenant les variables d'environnement à vérifier. Cela permet de simuler l'utilisation d'un terminal spécifique. Défaut : process.env.
  • Retourne : <nombre>

Retourne :

  • 1 pour 2,
  • 4 pour 16,
  • 8 pour 256,
  • 24 pour 16 777 216 couleurs prises en charge.

Utilisez ceci pour déterminer les couleurs prises en charge par le terminal. 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 appliquer une prise en charge de couleur spécifique, 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

Il est également possible de désactiver la prise en charge des couleurs à l'aide des variables d'environnement NO_COLOR et NODE_DISABLE_COLORS.

writeStream.getWindowSize()

Ajouté dans : v0.7.7

writeStream.getWindowSize() retourne la taille du TTY correspondant à ce WriteStream. Le tableau est de 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. Le support minimum est de 2 (noir et blanc).

Cela présente 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 simule la prise en charge de 2 ** 8 couleurs).

writeStream.isTTY

Ajouté dans : v0.5.8

Un booléen qui est toujours true.

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

[Historique]

VersionModifications
v12.7.0Le rappel write() du flux et la valeur de retour 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 l'émission de l'événement 'drain' avant de continuer à écrire des données supplémentaires ; sinon true.

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

writeStream.rows

Ajouté dans : v0.7.7

Un nombre spécifiant le nombre de lignes que le TTY possède 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() retourne true si le fd donné est associé à un TTY et false si ce n'est pas le cas, y compris lorsque fd n'est pas un entier positif ou nul.