Skip to content

TTY

[安定版: 2 - 安定版]

安定版: 2 安定度: 2 - 安定版

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

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

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

Node.js がテキスト端末(TTY)に接続されている状態で実行されていることを検出すると、process.stdin はデフォルトで tty.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 が現在 raw デバイスとして動作するように構成されている場合は true となる boolean 値です。

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

readStream.isTTY

追加されたバージョン: v0.5.8

tty.ReadStream インスタンスでは常に true となる boolean 値です。

readStream.setRawMode(mode)

追加日時: v0.7.7

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

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

ローモードの場合、入力は常に 1 文字ずつ利用可能になり、修飾子は含まれません。さらに、端末による文字の特別な処理はすべて無効になります(入力文字のエコー表示を含む)。このモードでは、+はSIGINTの原因とはなりません。

クラス: tty.WriteStream

追加日時: v0.5.8

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

new tty.ReadStream(fd[, options])

[履歴]

バージョン変更
v0.9.4options引数がサポートされました。
v0.5.8追加日時: v0.5.8

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

new tty.WriteStream(fd)

追加日時: v0.5.8

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

イベント: 'resize'

追加されたバージョン: v0.7.7

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

js
process.stdout.on('resize', () => {
  console.log('画面サイズが変わりました!')
  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()

追加されたバージョン: v0.7.7

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

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

追加されたバージョン: v11.13.0, v10.16.0

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

count で指定された数以上の色を writeStream がサポートしている場合、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

追加されたバージョン: v0.5.8

常に true である boolean

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

[履歴]

バージョン変更点
v12.7.0ストリームの write() コールバックと戻り値が公開されました。
v0.7.7追加されました: 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が非負の整数でない場合もfalseを返します。