Executar em um terminal

Renderize um app App Router ou um único componente em um terminal com text run e renderToTerminal.

text run renderiza um app com App Router em um terminal. Layout, componentes, mapas de teclas e manipuladores de rota são compartilhados com o navegador. A saída usa ANSI truecolor em vez de spans %c.

text run              # render ./app at /text run --path /logs # start on another route

Pressione Ctrl+C para sair. text run requer Bun.

text run

text run importa todos os arquivos de app/, monta o App Router com um histórico em memória e o desenha em tela cheia. <Link>, useRouter(), notFound() e redirect() funcionam sem alterações.

Chamadas fetch("/api/...") de mesma origem executam seus manipuladores route.ts no próprio processo, exatamente como text dev os serviria. Outras URLs usam a rede.

renderToTerminal

Para um único componente ou sua própria CLI:

cli.tsxtsx
import { renderToTerminal } from "@textjs/app/terminal";import { App } from "./app";const app = await renderToTerminal(<App />);await app.waitUntilExit();

useApp().exit() desmonta o app e restaura o terminal.

OpçãoDescrição
stdin / stdoutPadrão: process.stdin / process.stdout
cols / rowsTamanho fixo (padrão: acompanhar o terminal)
altScreenRestauração do histórico de rolagem ao sair (padrão: true)
mouseRolagem com a roda do mouse (padrão: true)
exitOnCtrlCPadrão: true
fpsLimite de quadros (padrão: 60)
patchConsoleRetenção de console.* até sair (padrão: true)
theme / transparentComo em createConsoleRoot

Saída

Cada quadro é comparado linha por linha. Apenas as linhas alteradas são escritas, envolvidas em marcadores de saída sincronizada para que os terminais compatíveis nunca mostrem um quadro parcialmente desenhado. Apps ociosos não escrevem nada.

Entrada

A entrada stdin em modo bruto é interpretada como os mesmos eventos que o navegador produz: setas e teclas de função com modificadores, combinações com Alt, colagem delimitada, roda do mouse SGR e o protocolo de teclado kitty. TerminalInputParser e parseTerminalInput são exportados caso você precise deles em outro lugar.

Diferenças

RecursoDevToolsTerminal
Cadência de quadros~15 fpsAté fps
Tamanho da gradeConsole acopladoJanela do terminal
<Image src>Carregamento via canvasUso de pixels
console.logSeus quadrosRetenção até sair
Editar esta página no GitHub