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 über Folgendes 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
werden standardmäßig als Instanzen von tty.WriteStream
initialisiert. Die bevorzugte Methode, um festzustellen, ob Node.js in einem TTY-Kontext ausgeführt wird, ist die Überprüfung, 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 kaum oder gar keinen 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, zusätzliche Instanzen zu erstellen.
readStream.isRaw
Hinzugefügt in: v0.7.7
Ein boolean
, der true
ist, wenn das TTY derzeit so konfiguriert ist, dass es als rohes Gerät arbeitet.
Dieses Flag ist immer false
, wenn ein Prozess startet, selbst wenn das Terminal im Raw-Modus 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 dietty.ReadStream
, um als rohes Gerät zu arbeiten. Wennfalse
, konfiguriert dietty.ReadStream
, um in ihrem Standardmodus zu arbeiten. Die EigenschaftreadStream.isRaw
wird auf den resultierenden Modus gesetzt.- Gibt zurück: <this> Die Read-Stream-Instanz.
Ermöglicht die Konfiguration von tty.ReadStream
, so dass sie als rohes Gerät arbeitet.
Im Raw-Modus sind Eingaben immer zeichenweise verfügbar, ohne Modifikatoren. Zusätzlich ist die gesamte spezielle Verarbeitung von Zeichen durch das Terminal deaktiviert, einschließlich des Echoing 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 Argument options 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 den übergeordnetennet.Socket
übergeben werden, sieheoptions
desnet.Socket
-Konstruktors.- Gibt <tty.ReadStream> zurück
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 <tty.WriteStream> zurück
Erstellt einen WriteStream
für fd
, der einem TTY zugeordnet ist.
Ereignis: 'resize'
Hinzugefügt in: v0.7.7
Das 'resize'
-Ereignis wird ausgelöst, wenn sich entweder die writeStream.columns
- oder die writeStream.rows
-Eigenschaft geändert hat. Beim Aufruf werden keine Argumente an den Listener-Callback übergeben.
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 Write()-Callback und der Rückgabewert des Streams werden offengelegt. |
v0.7.7 | Hinzugefügt in: v0.7.7 |
dir
<number>-1
: links vom Cursor1
: rechts vom Cursor0
: die gesamte Zeile
callback
<Function> Wird aufgerufen, sobald die Operation abgeschlossen ist.Gibt zurück: <boolean>
false
, wenn der Stream möchte, dass der aufrufende Code wartet, bis das'drain'
-Ereignis ausgelöst wurde, bevor er mit dem Schreiben zusätzlicher Daten fortfährt; andernfallstrue
.
writeStream.clearLine()
löscht die aktuelle Zeile dieses WriteStream
in einer durch dir
angegebenen Richtung.
writeStream.clearScreenDown([callback])
[Verlauf]
Version | Änderungen |
---|---|
v12.7.0 | Der Write()-Callback und der Rückgabewert des Streams werden offengelegt. |
v0.7.7 | Hinzugefügt in: v0.7.7 |
callback
<Function> Wird aufgerufen, sobald die Operation abgeschlossen ist.- Gibt zurück: <boolean>
false
, wenn der Stream möchte, dass der aufrufende Code wartet, bis das'drain'
-Ereignis ausgelöst wurde, bevor er mit dem Schreiben zusätzlicher Daten fortfährt; andernfallstrue
.
writeStream.clearScreenDown()
löscht diesen WriteStream
ab der aktuellen Cursorposition nach unten.
writeStream.columns
Hinzugefügt in: v0.7.7
Eine number
, die die Anzahl der Spalten angibt, die das TTY aktuell hat. Diese Eigenschaft wird aktualisiert, wenn das 'resize'
-Ereignis ausgelöst wird.
writeStream.cursorTo(x[, y][, callback])
[Verlauf]
Version | Änderungen |
---|---|
v12.7.0 | Der write()-Callback und der Rückgabewert des Streams werden offengelegt. |
v0.7.7 | Hinzugefügt in: v0.7.7 |
x
<number>y
<number>callback
<Function> Wird aufgerufen, sobald der Vorgang abgeschlossen ist.- Gibt zurück: <boolean>
false
, wenn der Stream möchte, dass der aufrufende Code wartet, bis das'drain'
-Ereignis ausgelöst wird, bevor er mit dem Schreiben zusätzlicher Daten fortfährt; andernfallstrue
.
writeStream.cursorTo()
bewegt den Cursor dieses WriteStream
an die angegebene Position.
writeStream.getColorDepth([env])
Hinzugefügt in: v9.9.0
env
<Object> Ein Objekt, das die Umgebungsvariablen enthält, die überprüft werden sollen. Dies ermöglicht die Simulation der Verwendung eines bestimmten Terminals. Standard:process.env
.- Gibt zurück: <number>
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 festzustellen, welche Farben das Terminal unterstützt. Aufgrund der Natur der Farben in Terminals ist es möglich, entweder falsch positive oder falsch negative Ergebnisse zu erhalten. Dies hängt von den Prozessinformationen und den Umgebungsvariablen ab, die möglicherweise über das verwendete Terminal lügen. 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 Farbuntersützung 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 Farbuntersützung ist auch über die 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 hat den 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 prü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 Mindestunterstü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 und der Rückgabewert des Streams 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 wartet, bis das'drain'
-Ereignis ausgelöst wurde, bevor er mit dem Schreiben zusätzlicher Daten fortfährt; 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 jedes Mal aktualisiert, wenn das 'resize'
-Ereignis ausgelöst wird.
tty.isatty(fd)
Hinzugefügt in: v0.5.8
Die Methode tty.isatty()
gibt true
zurück, wenn die gegebene fd
einem TTY zugeordnet ist, und false
, wenn dies nicht der Fall ist, auch wenn fd
keine nicht-negative Ganzzahl ist.