Node.js v10.8.0 文档


tty - 终端#

查看英文版参与翻译

稳定性: 2 - 稳定的

tty 模块提供了 tty.ReadStream 类和 tty.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.ReadStream 类和 tty.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)#

查看英文版参与翻译

tty.ReadStream 配置成原始模式。

在原始模式中,输入按字符逐个生效,但不包括修饰符。 终端对字符的所有特殊处理都会被禁用,包括应答输入的字符。 该模式中 CTRL+C 不再产生 SIGINT

  • mode <boolean> 如果为 true,则把 tty.ReadStream 配置成原始模式。 如果为 false,则把 tty.ReadStream 配置成默认模式。 readStream.isRaw 属性会被设为对应的值。

tty.WriteStream 类#

查看英文版参与翻译

tty.WriteStream 类是 net.Socket 的一个子类,表示 TTY 的可写部分。 正常情况下,process.stdoutprocess.stderr 是 Node.js 进程中唯一的 tty.WriteStream 实例,无需创建更多的实例。

'resize' 事件#

查看英文版参与翻译

writeStream.columns 属性或 writeStream.rows 属性发生变化时触发 'resize' 事件。 监听器回调函数没有参数。

process.stdout.on('resize', () => {
  console.log('窗口大小发生变化!');
  console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});

writeStream.columns#

查看英文版参与翻译

返回 TTY 当前具有的列数。 每当 'resize' 事件被触发时,该属性会被更新。

writeStream.isTTY#

查看英文版参与翻译

总是返回 true

writeStream.rows#

查看英文版参与翻译

返回 TTY 当前具有的行数。 每当 'resize' 事件被触发时,该属性会被更新。

writeStream.getColorDepth([env])#

查看英文版参与翻译

  • env <Object> 一个包含需要检查的环境变量的对象。 默认为 process.env
  • 返回: <number>

返回:

  • 1 支持 2 种颜色,
  • 4 支持 16 种颜色,
  • 8 支持 256 种颜色,
  • 24 支持 16,777,216 种颜色,

使用该函数检测终端支持的颜色。 鉴于终端中颜色的特性,可能存在误差。 这依赖于进程信息与环境变量,但它们可能会隐瞒使用的是终端。 为了执行特定行为时不依赖 process.env,可以传入带有不同选项的对象。

使用 NODE_DISABLE_COLORS 环境变量可以强制该函数总是返回 1。

tty.isatty(fd)#

查看英文版参与翻译

  • fd <number> 数值类型的文件描述符。

如果给定的 fd 有关联 TTY,则返回 true,否则返回 false