TTY#

安定性: 2 - 安定

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

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

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

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

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

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

クラス: tty.ReadStream#

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

readStream.isRaw#

TTY が現在 raw デバイスとして動作するように設定されている場合は true である boolean 値です。

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

readStream.isTTY#

tty.ReadStream インスタンスの場合は常に true である boolean 値です。

readStream.setRawMode(mode)#

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

tty.ReadStream が raw デバイスとして動作するように設定できます。

raw モードでは、入力は常に文字単位で利用でき、修飾子は含まれません。さらに、端末による文字のすべての特殊処理(入力文字のエコーなど)は無効になります。 Ctrl+C は、このモードでは SIGINT を発生させなくなります。

クラス: tty.WriteStream#

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

イベント: 'resize'#

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

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

writeStream.clearLine(dir[, callback])#

  • dir <number>
    • -1: カーソルから左方向
    • 1: カーソルから右方向
    • 0: 行全体
  • callback <Function> 操作が完了すると呼び出されます。
  • 戻り値: <boolean> ストリームが呼び出し元のコードに追加データを書き込む前に 'drain' イベントが発行されるのを待機する場合、false。それ以外の場合は true です。

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

writeStream.clearScreenDown([callback])#

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

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

writeStream.columns#

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

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

  • x <number>
  • y <number>
  • callback <Function> 操作が完了すると呼び出されます。
  • 戻り値: <boolean> ストリームが呼び出し元のコードに追加データを書き込む前に 'drain' イベントが発行されるのを待機する場合、false。それ以外の場合は true です。

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

writeStream.getColorDepth([env])#

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

戻り値

  • 1 (2色対応)
  • 4 (16色対応)
  • 8 (256色対応)
  • 24 (16,777,216色対応)

端末がサポートする色を判断するために使用します。端末の色の性質上、偽陽性または偽陰性になる可能性があります。プロセス情報と、使用されている端末について嘘をついている可能性のある環境変数に依存します。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()#

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

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

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

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

これは、writeStream.getColorDepth() で説明されているのと同じ偽陽性と偽陰性を持ちます。

process.stdout.hasColors();
// Returns true or false depending on if `stdout` supports at least 16 colors.
process.stdout.hasColors(256);
// Returns true or false depending on if `stdout` supports at least 256 colors.
process.stdout.hasColors({ TMUX: '1' });
// Returns true.
process.stdout.hasColors(2 ** 24, { TMUX: '1' });
// Returns false (the environment setting pretends to support 2 ** 8 colors). 

writeStream.isTTY#

常に true である boolean 値です。

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

  • dx <number>
  • dy <number>
  • callback <Function> 操作が完了すると呼び出されます。
  • 戻り値: <boolean> ストリームが呼び出し元のコードに追加データを書き込む前に 'drain' イベントが発行されるのを待機する場合、false。それ以外の場合は true です。

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

writeStream.rows#

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

tty.isatty(fd)#

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