TTY
ソースコード: lib/tty.js
node:tty
モジュールは、tty.ReadStream
クラスと tty.WriteStream
クラスを提供します。ほとんどの場合、このモジュールを直接使用することは必要でも可能でもありません。ただし、次のようにアクセスできます。
const tty = require('node:tty')
Node.js がテキスト端末(TTY)に接続されている状態で実行されていることを検出すると、process.stdin
はデフォルトで tty.ReadStream
のインスタンスとして初期化され、process.stdout
と process.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
追加されたバージョン: v0.5.8
- 拡張元: <net.Socket>
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
- 継承元: <net.Socket>
TTY の書き込み側を表します。通常、process.stdout
とprocess.stderr
は、Node.js プロセスに対して作成される唯一のtty.WriteStream
インスタンスであり、追加のインスタンスを作成する必要はありません。
new tty.ReadStream(fd[, options])
[履歴]
バージョン | 変更 |
---|---|
v0.9.4 | options 引数がサポートされました。 |
v0.5.8 | 追加日時: v0.5.8 |
fd
<number> TTY に関連付けられたファイルディスクリプタ。options
<Object> 親net.Socket
に渡されるオプション。net.Socket
コンストラクタのoptions
を参照してください。- 戻り値 <tty.ReadStream>
TTY に関連付けられたfd
のReadStream
を作成します。
new tty.WriteStream(fd)
追加日時: v0.5.8
fd
<number> TTY に関連付けられたファイルディスクリプタ。- 戻り値 <tty.WriteStream>
TTY に関連付けられたfd
のWriteStream
を作成します。
イベント: 'resize'
追加されたバージョン: v0.7.7
'resize'
イベントは、writeStream.columns
プロパティまたは writeStream.rows
プロパティのいずれかが変更されるたびに発生します。リスナーのコールバック関数は引数なしで呼び出されます。
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
戻り値:
- サポートされている色が 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
- 戻り値: <number[]>
writeStream.getWindowSize()
は、この WriteStream
に対応する TTY のサイズを返します。配列は [numColumns, numRows]
の型で、numColumns
と numRows
は対応する 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()
で説明されているのと同じ偽陽性と偽陰性を持ちます。
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
を返します。