TTY
[Stabil: 2 - Stabil]
Stabil: 2 Stabilität: 2 - Stabil
Quellcode: lib/tty.js
Das Modul node:tty
stellt die Klassen tty.ReadStream
und tty.WriteStream
bereit. In den meisten Fällen ist es weder notwendig noch möglich, dieses Modul direkt zu verwenden. Es kann jedoch wie folgt aufgerufen werden:
const tty = require('node:tty')
Wenn Node.js erkennt, dass es mit einem Textterminal ("TTY") verbunden ist, wird process.stdin
standardmäßig als eine Instanz von tty.ReadStream
initialisiert, und sowohl process.stdout
als auch process.stderr
sind standardmäßig Instanzen von tty.WriteStream
. Die bevorzugte Methode, um festzustellen, ob Node.js in einem TTY-Kontext ausgeführt wird, ist zu prüfen, ob der Wert der Eigenschaft process.stdout.isTTY
true
ist:
$ node -p -e "Boolean(process.stdout.isTTY)"
true
$ node -p -e "Boolean(process.stdout.isTTY)" | cat
false
In den meisten Fällen sollte es für eine Anwendung keinen oder kaum einen Grund geben, manuell Instanzen der Klassen tty.ReadStream
und tty.WriteStream
zu erstellen.
Klasse: tty.ReadStream
Hinzugefügt in: v0.5.8
- Erweitert: <net.Socket>
Stellt die lesbare Seite eines TTY dar. Unter normalen Umständen ist process.stdin
die einzige tty.ReadStream
-Instanz in einem Node.js-Prozess und es sollte keinen Grund geben, weitere Instanzen zu erstellen.
readStream.isRaw
Hinzugefügt in: v0.7.7
Ein Boolean
, der true
ist, wenn das TTY aktuell so konfiguriert ist, dass es als Rohgerät arbeitet.
Dieses Flag ist beim Start eines Prozesses immer false
, auch wenn das Terminal im Rohmodus arbeitet. Sein Wert ändert sich mit nachfolgenden Aufrufen von setRawMode
.
readStream.isTTY
Hinzugefügt in: v0.5.8
Ein Boolean
, der für tty.ReadStream
-Instanzen immer true
ist.
readStream.setRawMode(mode)
Hinzugefügt in: v0.7.7
mode
<boolean> Wenntrue
, konfiguriert dentty.ReadStream
so, dass er als Rohgerät arbeitet. Wennfalse
, konfiguriert dentty.ReadStream
so, dass er in seinem Standardmodus arbeitet. Die EigenschaftreadStream.isRaw
wird auf den resultierenden Modus gesetzt.- Gibt zurück: <this> Die Lesestream-Instanz.
Ermöglicht die Konfiguration von tty.ReadStream
, sodass er als Rohgerät arbeitet.
Im Raw-Modus ist die Eingabe immer zeichenweise verfügbar, einschließlich Modifikatoren. Darüber hinaus wird die gesamte spezielle Verarbeitung von Zeichen durch das Terminal deaktiviert, einschließlich des Echos von Eingabezeichen. + verursacht in diesem Modus kein SIGINT
mehr.
Klasse: tty.WriteStream
Hinzugefügt in: v0.5.8
- Erweitert: <net.Socket>
Repräsentiert die beschreibbare Seite eines TTY. Unter normalen Umständen sind process.stdout
und process.stderr
die einzigen tty.WriteStream
-Instanzen, die für einen Node.js-Prozess erstellt werden, und es sollte keinen Grund geben, zusätzliche Instanzen zu erstellen.
new tty.ReadStream(fd[, options])
[Verlauf]
Version | Änderungen |
---|---|
v0.9.4 | Das options -Argument wird unterstützt. |
v0.5.8 | Hinzugefügt in: v0.5.8 |
fd
<number> Ein Dateideskriptor, der einem TTY zugeordnet ist.options
<Object> Optionen, die an das übergeordnetenet.Socket
übergeben werden, sieheoptions
desnet.Socket
-Konstruktors.- Gibt zurück <tty.ReadStream>
Erstellt einen ReadStream
für fd
, der einem TTY zugeordnet ist.
new tty.WriteStream(fd)
Hinzugefügt in: v0.5.8
fd
<number> Ein Dateideskriptor, der einem TTY zugeordnet ist.- Gibt zurück <tty.WriteStream>
Erstellt einen WriteStream
für fd
, der einem TTY zugeordnet ist.
Ereignis: 'resize'
Hinzugefügt in: v0.7.7
Das Ereignis 'resize'
wird immer dann ausgelöst, wenn sich entweder die Eigenschaften writeStream.columns
oder writeStream.rows
geändert haben. Es werden keine Argumente an den Listener-Callback übergeben, wenn er aufgerufen wird.
process.stdout.on('resize', () => {
console.log('Die Bildschirmgröße hat sich geändert!')
console.log(`${process.stdout.columns}x${process.stdout.rows}`)
})
writeStream.clearLine(dir[, callback])
[Verlauf]
Version | Änderungen |
---|---|
v12.7.0 | Der Rückruf von write() des Streams und der Rückgabewert werden offengelegt. |
v0.7.7 | Hinzugefügt in: v0.7.7 |
dir
<number>-1
: nach links vom Cursor1
: nach rechts vom Cursor0
: die gesamte Zeile
callback
<Function> Wird aufgerufen, sobald der Vorgang abgeschlossen ist.Gibt zurück: <boolean>
false
, wenn der Stream möchte, dass der aufrufende Code auf das Auslösen des Ereignisses'drain'
wartet, bevor er weitere Daten schreibt; andernfallstrue
.
writeStream.clearLine()
löscht die aktuelle Zeile dieses WriteStream
in eine durch dir
angegebene Richtung.
writeStream.clearScreenDown([callback])
[Verlauf]
Version | Änderungen |
---|---|
v12.7.0 | Der Rückruf von write() des Streams und der Rückgabewert werden offengelegt. |
v0.7.7 | Hinzugefügt in: v0.7.7 |
callback
<Function> Wird aufgerufen, sobald der Vorgang abgeschlossen ist.- Gibt zurück: <boolean>
false
, wenn der Stream möchte, dass der aufrufende Code auf das Auslösen des Ereignisses'drain'
wartet, bevor er weitere Daten schreibt; andernfallstrue
.
writeStream.clearScreenDown()
löscht diesen WriteStream
vom aktuellen Cursor abwärts.
writeStream.columns
Hinzugefügt in: v0.7.7
Eine Zahl
, die die Anzahl der Spalten angibt, die das TTY aktuell hat. Diese Eigenschaft wird immer dann aktualisiert, wenn das Ereignis 'resize'
ausgelöst wird.
writeStream.cursorTo(x[, y][, callback])
[Verlauf]
Version | Änderungen |
---|---|
v12.7.0 | Der Callback von stream.write() und der Rückgabewert werden offengelegt. |
v0.7.7 | Hinzugefügt in: v0.7.7 |
x
<Zahl>y
<Zahl>callback
<Funktion> Wird aufgerufen, wenn der Vorgang abgeschlossen ist.- Gibt zurück: <boolean>
false
, wenn der Stream wünscht, dass der aufrufende Code auf das Auslösen des Ereignisses'drain'
wartet, bevor mit dem Schreiben zusätzlicher Daten fortgefahren wird; andernfallstrue
.
writeStream.cursorTo()
bewegt den Cursor dieses WriteStream
an die angegebene Position.
writeStream.getColorDepth([env])
Hinzugefügt in: v9.9.0
env
<Objekt> Ein Objekt, das die Umgebungsvariablen enthält, die überprüft werden sollen. Dies ermöglicht das Simulieren der Verwendung eines bestimmten Terminals. Standard:process.env
.- Gibt zurück: <Zahl>
Gibt zurück:
1
für 2,4
für 16,8
für 256,24
für 16.777.216 unterstützte Farben.
Verwenden Sie dies, um zu bestimmen, welche Farben das Terminal unterstützt. Aufgrund der Beschaffenheit von Farben in Terminals sind sowohl falsch-positive als auch falsch-negative Ergebnisse möglich. Dies hängt von den Prozessinformationen und den Umgebungsvariablen ab, die möglicherweise falsch angeben, welches Terminal verwendet wird. Es ist möglich, ein env
-Objekt zu übergeben, um die Verwendung eines bestimmten Terminals zu simulieren. Dies kann nützlich sein, um zu überprüfen, wie sich bestimmte Umgebungseinstellungen verhalten.
Um eine bestimmte Farbsupport zu erzwingen, verwenden Sie eine der folgenden Umgebungseinstellungen.
- 2 Farben:
FORCE_COLOR = 0
(Deaktiviert Farben) - 16 Farben:
FORCE_COLOR = 1
- 256 Farben:
FORCE_COLOR = 2
- 16.777.216 Farben:
FORCE_COLOR = 3
Das Deaktivieren der Farbsupport ist auch mit den Umgebungsvariablen NO_COLOR
und NODE_DISABLE_COLORS
möglich.
writeStream.getWindowSize()
Hinzugefügt in: v0.7.7
- Gibt zurück: <number[]>
writeStream.getWindowSize()
gibt die Größe des TTY zurück, das diesem WriteStream
entspricht. Das Array ist vom Typ [numColumns, numRows]
, wobei numColumns
und numRows
die Anzahl der Spalten und Zeilen im entsprechenden TTY darstellen.
writeStream.hasColors([count][, env])
Hinzugefügt in: v11.13.0, v10.16.0
count
<integer> Die Anzahl der angeforderten Farben (mindestens 2). Standard: 16.env
<Object> Ein Objekt, das die zu überprüfenden Umgebungsvariablen enthält. Dies ermöglicht die Simulation der Verwendung eines bestimmten Terminals. Standard:process.env
.- Gibt zurück: <boolean>
Gibt true
zurück, wenn der writeStream
mindestens so viele Farben unterstützt, wie in count
angegeben. Die minimale Unterstützung beträgt 2 (schwarz und weiß).
Dies hat die gleichen falsch positiven und negativen Ergebnisse wie in writeStream.getColorDepth()
beschrieben.
process.stdout.hasColors()
// Gibt true oder false zurück, je nachdem, ob `stdout` mindestens 16 Farben unterstützt.
process.stdout.hasColors(256)
// Gibt true oder false zurück, je nachdem, ob `stdout` mindestens 256 Farben unterstützt.
process.stdout.hasColors({ TMUX: '1' })
// Gibt true zurück.
process.stdout.hasColors(2 ** 24, { TMUX: '1' })
// Gibt false zurück (die Umgebungseinstellung gibt vor, 2 ** 8 Farben zu unterstützen).
writeStream.isTTY
Hinzugefügt in: v0.5.8
Ein boolean
, der immer true
ist.
writeStream.moveCursor(dx, dy[, callback])
[Verlauf]
Version | Änderungen |
---|---|
v12.7.0 | Der Write()-Callback des Streams und der Rückgabewert werden offengelegt. |
v0.7.7 | Hinzugefügt in: v0.7.7 |
dx
<number>dy
<number>callback
<Function> Wird aufgerufen, sobald die Operation abgeschlossen ist.- Gibt zurück: <boolean>
false
, wenn der Stream möchte, dass der aufrufende Code auf das Ereignis'drain'
wartet, bevor weitere Daten geschrieben werden; andernfallstrue
.
writeStream.moveCursor()
bewegt den Cursor dieses WriteStream
relativ zu seiner aktuellen Position.
writeStream.rows
Hinzugefügt in: v0.7.7
Eine number
, die die Anzahl der Zeilen angibt, die das TTY aktuell hat. Diese Eigenschaft wird aktualisiert, wenn das Ereignis 'resize'
ausgelöst wird.
tty.isatty(fd)
Hinzugefügt in: v0.5.8
Die Methode tty.isatty()
gibt true
zurück, wenn die gegebene fd
mit einem TTY verbunden ist, und false
, wenn dies nicht der Fall ist, einschließlich, wenn fd
keine nicht-negative Ganzzahl ist.