Node.js v12.4.0 文档


tty(终端)#

中英对照提交修改

稳定性: 2 - 稳定

tty 模块提供 tty.ReadStreamtty.WriteStream 类。 在大多数情况下,没有必要或可能直接使用此模块。 可以使用以下方法访问它:

const tty = require('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.ReadStreamtty.WriteStream 类的实例。

tty.ReadStream 类#

中英对照提交修改

tty.ReadStream 类是 net.Socket 的子类,表示 TTY 的可读端。 在正常情况下,process.stdin 将是 Node.js 进程中唯一的 tty.ReadStream 实例,并且没有理由创建其他实例。

readStream.isRaw#

中英对照提交修改

布尔值,如果 TTY 当前配置为作为原始设备运行,则为 true。 默认为 false

readStream.isTTY#

中英对照提交修改

布尔值,对于 tty.ReadStream 实例始终为 true

readStream.setRawMode(mode)#

中英对照提交修改

  • mode <boolean> 如果为 true,则将 tty.ReadStream 配置为作为原始设备运行。 如果为 false,则将 tty.ReadStream 配置为以其默认模式运行。 readStream.isRaw 属性将设置为结果模式。
  • 返回: <this> - 读取流实例。

允许配置 tty.ReadStream,使其作为原始设备运行。

在原始模式下,输入始终可用于逐个字符,不包括修饰符。 此外,终端对字符的所有特殊处理都被禁用,包括回显输入字符。 注意,在此模式下, CTRL+C 将不再导致 SIGINT

tty.WriteStream 类#

中英对照提交修改

tty.WriteStream 类是 net.Socket 的子类,表示 TTY 的可写端。 在正常情况下,process.stdoutprocess.stderr 将是为 Node.js 进程创建的唯一 tty.WriteStream 实例,并且没有理由创建其他实例。

'resize' 事件#

中英对照提交修改

只要 writeStream.columnswriteStream.rows 属性发生更改,就会触发 'resize' 事件。 调用时,没有参数传递给监听器回调。

process.stdout.on('resize', () => {
  console.log('屏幕大小已经改变');
  console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});

writeStream.clearLine(dir)#

中英对照提交修改

  • dir <number>

    • -1 - 从光标向左。
    • 1 - 从光标向右。
    • 0 - 整行。

writeStream.clearLine()dir 标识的方向上清除此 WriteStream 的当前行。

writeStream.clearScreenDown()#

中英对照提交修改

writeStream.clearScreenDown() 从当前光标向下清除此 WriteStream

writeStream.columns#

中英对照提交修改

一个数字,指定 TTY 当前具有的列数。 每当触发 'resize' 事件时,此属性都会更新。

writeStream.cursorTo(x, y)#

中英对照提交修改

writeStream.cursorTo()WriteStream 的光标移动到指定的位置。

writeStream.getColorDepth([env])#

查看v10.x中文文档

  • env <Object> An object containing the environment variables to check. This enables simulating the usage of a specific terminal. Default: process.env.
  • Returns: <number>

Returns:

  • 1 for 2,
  • 4 for 16,
  • 8 for 256,
  • 24 for 16,777,216 colors supported.

Use this to determine what colors the terminal supports. Due to the nature of colors in terminals it is possible to either have false positives or false negatives. It depends on process information and the environment variables that may lie about what terminal is used. It is possible to pass in an env object to simulate the usage of a specific terminal. This can be useful to check how specific environment settings behave.

To enforce a specific color support, use one of the below environment settings.

  • 2 colors: FORCE_COLOR = 0 (Disables colors)
  • 16 colors: FORCE_COLOR = 1
  • 256 colors: FORCE_COLOR = 2
  • 16,777,216 colors: FORCE_COLOR = 3

Disabling color support is also possible by using the NO_COLOR and NODE_DISABLE_COLORS environment variables.

writeStream.getWindowSize()#

中英对照提交修改

writeStream.getWindowSize() 返回与此 WriteStream 对应的 TTY 的大小。 该数组的类型为 [numColumns, numRows],其中 numColumnsnumRows 表示相应 TTY 中的列数和行数。

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

暂无中英对照提交修改

  • count <integer> The number of colors that are requested (minimum 2). Default: 16.
  • env <Object> An object containing the environment variables to check. This enables simulating the usage of a specific terminal. Default: process.env.
  • Returns: <boolean>

Returns true if the writeStream supports at least as many colors as provided in count. Minimum support is 2 (black and white).

This has the same false positives and negatives as described in 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

writeStream.moveCursor(dx, dy)#

中英对照提交修改

writeStream.moveCursor()WriteStream 的光标相对于其当前位置移动。

writeStream.rows#

中英对照提交修改

一个数字,指定 TTY 当前具有的行数。 每当触发 'resize' 事件时,此属性都会更新。

tty.isatty(fd)#

查看v10.x中文文档

The tty.isatty() method returns true if the given fd is associated with a TTY and false if it is not, including whenever fd is not a non-negative integer.