Skip to content

TTY

[Estável: 2 - Estável]

Estável: 2 Estabilidade: 2 - Estável

Código-Fonte: lib/tty.js

O módulo node:tty fornece as classes tty.ReadStream e tty.WriteStream. Na maioria dos casos, não será necessário ou possível usar este módulo diretamente. No entanto, ele pode ser acessado usando:

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

Quando o Node.js detecta que está sendo executado com um terminal de texto ("TTY") anexado, process.stdin será, por padrão, inicializado como uma instância de tty.ReadStream e ambos process.stdout e process.stderr serão, por padrão, instâncias de tty.WriteStream. O método preferido para determinar se o Node.js está sendo executado em um contexto TTY é verificar se o valor da propriedade process.stdout.isTTY é true:

bash
$ node -p -e "Boolean(process.stdout.isTTY)"
true
$ node -p -e "Boolean(process.stdout.isTTY)" | cat
false

Na maioria dos casos, deve haver pouca ou nenhuma razão para um aplicativo criar manualmente instâncias das classes tty.ReadStream e tty.WriteStream.

Classe: tty.ReadStream

Adicionado em: v0.5.8

Representa o lado legível de um TTY. Em circunstâncias normais, process.stdin será a única instância tty.ReadStream em um processo Node.js e não deve haver razão para criar instâncias adicionais.

readStream.isRaw

Adicionado em: v0.7.7

Um booleano que é true se o TTY estiver atualmente configurado para operar como um dispositivo raw.

Esta flag é sempre false quando um processo inicia, mesmo que o terminal esteja operando no modo raw. Seu valor mudará com chamadas subsequentes a setRawMode.

readStream.isTTY

Adicionado em: v0.5.8

Um booleano que é sempre true para instâncias tty.ReadStream.

readStream.setRawMode(mode)

Adicionado em: v0.7.7

  • mode <boolean> Se true, configura o tty.ReadStream para operar como um dispositivo raw. Se false, configura o tty.ReadStream para operar em seu modo padrão. A propriedade readStream.isRaw será definida para o modo resultante.
  • Retorna: <this> A instância do fluxo de leitura.

Permite a configuração de tty.ReadStream para que ele opere como um dispositivo raw.

Quando em modo raw, a entrada está sempre disponível caractere por caractere, não incluindo modificadores. Além disso, todo o processamento especial de caracteres pelo terminal é desabilitado, incluindo o eco de caracteres de entrada. + não causará mais um SIGINT neste modo.

Classe: tty.WriteStream

Adicionado em: v0.5.8

Representa o lado gravável de um TTY. Em circunstâncias normais, process.stdout e process.stderr serão as únicas instâncias tty.WriteStream criadas para um processo Node.js e não deve haver razão para criar instâncias adicionais.

new tty.ReadStream(fd[, options])

[Histórico]

VersãoAlterações
v0.9.4O argumento options é suportado.
v0.5.8Adicionada em: v0.5.8

Cria um ReadStream para fd associado a um TTY.

new tty.WriteStream(fd)

Adicionado em: v0.5.8

Cria um WriteStream para fd associado a um TTY.

Evento: 'resize'

Adicionado em: v0.7.7

O evento 'resize' é emitido sempre que as propriedades writeStream.columns ou writeStream.rows forem alteradas. Nenhum argumento é passado para o callback do listener quando chamado.

js
process.stdout.on('resize', () => {
  console.log('tamanho da tela alterado!')
  console.log(`${process.stdout.columns}x${process.stdout.rows}`)
})

writeStream.clearLine(dir[, callback])

[Histórico]

VersãoAlterações
v12.7.0O callback e o valor de retorno do write() do stream são expostos.
v0.7.7Adicionada em: v0.7.7
  • dir <number>

    • -1: para a esquerda do cursor
    • 1: para a direita do cursor
    • 0: a linha inteira
  • callback <Function> Invocável assim que a operação for concluída.

  • Retorna: <boolean> false se o stream desejar que o código de chamada aguarde a emissão do evento 'drain' antes de continuar a gravar dados adicionais; caso contrário, true.

writeStream.clearLine() limpa a linha atual deste WriteStream na direção identificada por dir.

writeStream.clearScreenDown([callback])

[Histórico]

VersãoAlterações
v12.7.0O callback e o valor de retorno do write() do stream são expostos.
v0.7.7Adicionada em: v0.7.7
  • callback <Function> Invocável assim que a operação for concluída.
  • Retorna: <boolean> false se o stream desejar que o código de chamada aguarde a emissão do evento 'drain' antes de continuar a gravar dados adicionais; caso contrário, true.

writeStream.clearScreenDown() limpa este WriteStream do cursor atual para baixo.

writeStream.columns

Adicionado em: v0.7.7

Um número especificando o número de colunas que o TTY possui atualmente. Esta propriedade é atualizada sempre que o evento 'resize' é emitido.

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

[Histórico]

VersãoAlterações
v12.7.0O retorno do callback e o valor retornado do método write() do stream são expostos.
v0.7.7Adicionada em: v0.7.7
  • x <número>
  • y <número>
  • callback <Função> Invoca-se assim que a operação é concluída.
  • Retorna: <booleano> false se o stream deseja que o código chamador aguarde a emissão do evento 'drain' antes de continuar a escrever dados adicionais; caso contrário, true.

writeStream.cursorTo() move o cursor deste WriteStream para a posição especificada.

writeStream.getColorDepth([env])

Adicionado em: v9.9.0

  • env <Objeto> Um objeto contendo as variáveis de ambiente a serem verificadas. Isso permite simular o uso de um terminal específico. Padrão: process.env.
  • Retorna: <número>

Retorna:

  • 1 para 2,
  • 4 para 16,
  • 8 para 256,
  • 24 para 16.777.216 cores suportadas.

Use isto para determinar quais cores o terminal suporta. Devido à natureza das cores nos terminais, é possível ter falsos positivos ou falsos negativos. Depende das informações do processo e das variáveis de ambiente que podem mentir sobre qual terminal está sendo usado. É possível passar um objeto env para simular o uso de um terminal específico. Isso pode ser útil para verificar como configurações de ambiente específicas se comportam.

Para impor um suporte de cor específico, use uma das configurações de ambiente abaixo.

  • 2 cores: FORCE_COLOR = 0 (Desativa as cores)
  • 16 cores: FORCE_COLOR = 1
  • 256 cores: FORCE_COLOR = 2
  • 16.777.216 cores: FORCE_COLOR = 3

Desabilitar o suporte de cor também é possível usando as variáveis de ambiente NO_COLOR e NODE_DISABLE_COLORS.

writeStream.getWindowSize()

Adicionado em: v0.7.7

writeStream.getWindowSize() retorna o tamanho do TTY correspondente a este WriteStream. O array é do tipo [numColumns, numRows], onde numColumns e numRows representam o número de colunas e linhas no TTY correspondente.

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

Adicionado em: v11.13.0, v10.16.0

  • count <integer> O número de cores solicitadas (mínimo 2). Padrão: 16.
  • env <Object> Um objeto contendo as variáveis de ambiente a verificar. Isso permite simular o uso de um terminal específico. Padrão: process.env.
  • Retorna: <boolean>

Retorna true se o writeStream suporta pelo menos tantas cores quanto fornecidas em count. O suporte mínimo é 2 (preto e branco).

Isso tem os mesmos falsos positivos e negativos descritos em writeStream.getColorDepth().

js
process.stdout.hasColors()
// Retorna true ou false dependendo se `stdout` suporta pelo menos 16 cores.
process.stdout.hasColors(256)
// Retorna true ou false dependendo se `stdout` suporta pelo menos 256 cores.
process.stdout.hasColors({ TMUX: '1' })
// Retorna true.
process.stdout.hasColors(2 ** 24, { TMUX: '1' })
// Retorna false (a configuração do ambiente finge suportar 2 ** 8 cores).

writeStream.isTTY

Adicionado em: v0.5.8

Um boolean que é sempre true.

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

[Histórico]

VersãoAlterações
v12.7.0O callback write() do stream e o valor de retorno são expostos.
v0.7.7Adicionada em: v0.7.7
  • dx <number>
  • dy <number>
  • callback <Function> Invoca-se assim que a operação é concluída.
  • Retorna: <boolean> false se o stream deseja que o código de chamada aguarde o evento 'drain' ser emitido antes de continuar a escrever dados adicionais; caso contrário, true.

writeStream.moveCursor() move o cursor deste WriteStream relativamente à sua posição atual.

writeStream.rows

Adicionado em: v0.7.7

Um número especificando o número de linhas que o TTY atualmente possui. Esta propriedade é atualizada sempre que o evento 'resize' é emitido.

tty.isatty(fd)

Adicionado em: v0.5.8

O método tty.isatty() retorna true se o fd fornecido estiver associado a um TTY e false se não estiver, incluindo quando fd não for um inteiro não negativo.