Node.js v18.18.2 文档


目录

TTY#

稳定性:2 - 稳定

源代码: lib/tty.js

node:tty模块提供了tty.ReadStreamtty.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.ReadStreamtty.WriteStream 类的实例。

类:tty.ReadStream#

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

readStream.isRaw#

如果TTY当前配置为作为原始设备运行,则booleantrue

当进程启动时,即使终端在原始模式下运行,此标志始终为false 。它的值将随着对setRawMode的后续调用而改变 。

readStream.isTTY#

对于tty.ReadStream实例,boolean始终为true

readStream.setRawMode(mode)#

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

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

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

类:tty.WriteStream#

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

事件:'resize'#

只要 writeStream.columnswriteStream.rows 属性发生更改,就会发出 'resize'事件。调用时不会将任何参数传递给侦听器回调。

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

writeStream.clearLine(dir[, callback])#

  • dir <数字>
    • -1:光标左侧
    • 1:光标右侧
    • 0:整行
  • callback <Function>操作完成后调用。
  • 返回:<boolean> false如果流希望调用代码在继续写入其他数据之前等待发出'drain'事件;否则true

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

writeStream.clearScreenDown([callback])#

  • callback <Function>操作完成后调用。
  • 返回:<boolean> false如果流希望调用代码在继续写入其他数据之前等待发出'drain'事件;否则true

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

writeStream.columns#

number指定 TTY 当前拥有的列数。每当发出'resize'事件时,此属性都会更新。

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

  • x <数字>
  • y <数字>
  • callback <Function>操作完成后调用。
  • 返回:<boolean> false如果流希望调用代码在继续写入其他数据之前等待'drain'事件发出;否则true

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

writeStream.getColorDepth([env])#

  • env <Object>包含要检查的环境变量的对象。这使得能够模拟特定终端的使用。默认值: process.env
  • 返回:<数字>

返回:

  • 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_COLORNODE_DISABLE_COLORS环境变量来禁用颜色支持。

writeStream.getWindowSize()#

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

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

  • count <整数>请求的颜色数量(最少 2)。 默认值: 16。
  • env <Object>包含要检查的环境变量的对象。这使得能够模拟特定终端的使用。默认值: process.env
  • 返回:<布尔值>

如果writeStream支持的颜色至少与count中提供的颜色一样多,则返回 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#

始终为 trueboolean

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

  • dx <数字>
  • dy <数字>
  • callback <Function>操作完成后调用。
  • 返回:<boolean> false如果流希望调用代码在继续写入其他数据之前等待发出'drain'事件;否则true

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

writeStream.rows#

number指定 TTY 当前拥有的行数。每当发出'resize'事件时,此属性都会更新。

tty.isatty(fd)#

如果给定的fd与 TTY 关联,则 tty.isatty()方法返回true;如果未关联,则返回false ,包括每当fd不是非负整数。

NodeJS中文文档为Read dev Docs平台提供托管,中文NodeJS文档均由英文版NodeJS文档翻译,版权属于nodejs.org