Skip to content

TTY

[Stable: 2 - 安定]

Stable: 2 安定度: 2 - 安定

ソースコード: lib/tty.js

node:tty モジュールは、tty.ReadStreamtty.WriteStream クラスを提供します。ほとんどの場合、このモジュールを直接使用する必要も可能性もありません。ただし、以下を使用してアクセスできます。

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

Node.js がテキスト端末 ("TTY") が接続された状態で実行されていることを検出すると、デフォルトで process.stdintty.ReadStream のインスタンスとして初期化され、process.stdoutprocess.stderr の両方が、デフォルトで tty.WriteStream のインスタンスとして初期化されます。Node.js が TTY コンテキスト内で実行されているかどうかを判断する推奨される方法は、process.stdout.isTTY プロパティの値が true であることを確認することです。

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

ほとんどの場合、アプリケーションが tty.ReadStream および tty.WriteStream クラスのインスタンスを手動で作成する理由はありません。

クラス: tty.ReadStream

追加: v0.5.8

TTY の読み取り可能な側を表します。通常の場合、process.stdin は Node.js プロセス内で唯一の tty.ReadStream インスタンスであり、追加のインスタンスを作成する理由はありません。

readStream.isRaw

追加: v0.7.7

TTY が現在、生のデバイスとして動作するように構成されている場合は true である boolean

ターミナルが生モードで動作している場合でも、プロセスが開始されるとこのフラグは常に false になります。その値は、その後の setRawMode の呼び出しによって変化します。

readStream.isTTY

追加: v0.5.8

tty.ReadStream インスタンスの場合、常に true である boolean

readStream.setRawMode(mode)

Added in: v0.7.7

  • mode <boolean> true の場合、tty.ReadStream を raw デバイスとして動作するように設定します。false の場合、tty.ReadStream をデフォルトモードで動作するように設定します。readStream.isRaw プロパティは、結果のモードに設定されます。
  • 戻り値: <this> リードストリームのインスタンス。

tty.ReadStream を設定して、raw デバイスとして動作させることができます。

raw モードの場合、入力は常に文字単位で利用可能であり、修飾子は含まれません。さらに、端末による文字の特殊な処理はすべて無効になり、入力文字のエコーも無効になります。このモードでは、+ を押しても SIGINT は発生しません。

Class: tty.WriteStream

Added in: v0.5.8

TTY の書き込み可能な側を表します。通常、process.stdoutprocess.stderr は、Node.js プロセスで作成される唯一の tty.WriteStream インスタンスであり、追加のインスタンスを作成する理由はありません。

new tty.ReadStream(fd[, options])

[履歴]

バージョン変更
v0.9.4options 引数がサポートされています。
v0.5.8Added in: v0.5.8

TTY に関連付けられた fdReadStream を作成します。

new tty.WriteStream(fd)

Added in: v0.5.8

TTY に関連付けられた fdWriteStream を作成します。

イベント: 'resize'

追加: v0.7.7

'resize' イベントは、writeStream.columns または writeStream.rows プロパティのいずれかが変更されるたびに発生します。呼び出される際、リスナーコールバックに引数は渡されません。

js
process.stdout.on('resize', () => {
  console.log('screen size has changed!');
  console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});

writeStream.clearLine(dir[, callback])

[履歴]

バージョン変更点
v12.7.0ストリームの write() コールバックと戻り値が公開されました。
v0.7.7追加: v0.7.7
  • dir <number>

    • -1: カーソルから左
    • 1: カーソルから右
    • 0: 行全体
  • callback <Function> 操作が完了すると呼び出されます。

  • 戻り値: <boolean> ストリームが、追加のデータを書き込む前に 'drain' イベントが発行されるのを呼び出し元のコードに待機させたい場合は false。それ以外の場合は true

writeStream.clearLine() は、dir で指定された方向にこの WriteStream の現在の行をクリアします。

writeStream.clearScreenDown([callback])

[履歴]

バージョン変更点
v12.7.0ストリームの write() コールバックと戻り値が公開されました。
v0.7.7追加: v0.7.7
  • callback <Function> 操作が完了すると呼び出されます。
  • 戻り値: <boolean> ストリームが、追加のデータを書き込む前に 'drain' イベントが発行されるのを呼び出し元のコードに待機させたい場合は false。それ以外の場合は true

writeStream.clearScreenDown() は、この WriteStream を現在のカーソル位置から下方向にクリアします。

writeStream.columns

追加: v0.7.7

TTYが現在持っているカラム数を指定するnumber。このプロパティは、'resize'イベントが発生するたびに更新されます。

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

[履歴]

バージョン変更
v12.7.0ストリームのwrite()コールバックと戻り値が公開されました。
v0.7.7追加: v0.7.7
  • x <number>
  • y <number>
  • callback <Function> 操作が完了すると呼び出されます。
  • 戻り値: <boolean> ストリームが、追加のデータを書き込む前に 'drain' イベントが発行されるのを呼び出し元のコードが待機することを望む場合は false、それ以外の場合は true

writeStream.cursorTo() は、この WriteStream のカーソルを指定された位置に移動します。

writeStream.getColorDepth([env])

追加: v9.9.0

  • env <Object> チェックする環境変数を含むオブジェクト。 これにより、特定のターミナルの使用をシミュレートできます。 デフォルト: process.env
  • 戻り値: <number>

戻り値:

  • 2色の場合 1
  • 16色の場合 4
  • 256色の場合 8
  • 16,777,216色サポートの場合 24

これをターミナルがサポートする色を判断するために使用します。 ターミナルの色の性質上、偽陽性または偽陰性が発生する可能性があります。 プロセス情報と、使用されているターミナルについて嘘をつく可能性のある環境変数によって異なります。 特定のターミナルの使用をシミュレートするために env オブジェクトを渡すことが可能です。 これは、特定の環境設定がどのように動作するかを確認するのに役立ちます。

特定の色サポートを強制するには、以下の環境設定のいずれかを使用します。

  • 2色: FORCE_COLOR = 0 (色を無効にします)
  • 16色: FORCE_COLOR = 1
  • 256色: FORCE_COLOR = 2
  • 16,777,216色: FORCE_COLOR = 3

色サポートの無効化は、NO_COLOR および NODE_DISABLE_COLORS 環境変数を使用しても可能です。

writeStream.getWindowSize()

Added in: v0.7.7

writeStream.getWindowSize() は、この WriteStream に対応する TTY のサイズを返します。配列は [numColumns, numRows] の型で、numColumnsnumRows は対応する TTY の列数と行数を表します。

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

Added in: v11.13.0, v10.16.0

  • count <integer> 要求される色の数(最低2)。デフォルト: 16。
  • env <Object> チェックする環境変数を含むオブジェクト。これにより、特定のターミナルの使用をシミュレートできます。デフォルト: process.env
  • 戻り値: <boolean>

writeStreamcount で指定された数以上の色をサポートしている場合は true を返します。最小サポートは 2 色(白黒)です。

これは、writeStream.getColorDepth() で説明されているのと同じ誤検出と誤陰性があります。

js
process.stdout.hasColors();
// `stdout` が少なくとも 16 色をサポートしている場合は true または false を返します。
process.stdout.hasColors(256);
// `stdout` が少なくとも 256 色をサポートしている場合は true または false を返します。
process.stdout.hasColors({ TMUX: '1' });
// true を返します。
process.stdout.hasColors(2 ** 24, { TMUX: '1' });
// false を返します(環境設定は 2 ** 8 色をサポートしているふりをします)。

writeStream.isTTY

Added in: v0.5.8

常に true である boolean

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

[履歴]

バージョン変更
v12.7.0ストリームの write() コールバックと戻り値が公開されました。
v0.7.7Added in: v0.7.7
  • dx <number>
  • dy <number>
  • callback <Function> 操作が完了すると呼び出されます。
  • 戻り値: <boolean> ストリームが追加のデータを書き込む前に、呼び出し元のコードに 'drain' イベントが発行されるのを待つように要求する場合は false、そうでない場合は true

writeStream.moveCursor() は、この WriteStream のカーソルを現在の位置から相対的に移動します。

writeStream.rows

追加: v0.7.7

TTY が現在持つ行数を指定する number。このプロパティは、'resize' イベントが発行されるたびに更新されます。

tty.isatty(fd)

追加: v0.5.8

tty.isatty() メソッドは、与えられた fd が TTY に関連付けられている場合は true を、そうでない場合は false を返します。これには、fd が非負の整数でない場合も含まれます。