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 routePressione 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:
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ção | Descrição |
|---|---|
stdin / stdout | Padrão: process.stdin / process.stdout |
cols / rows | Tamanho fixo (padrão: acompanhar o terminal) |
altScreen | Restauração do histórico de rolagem ao sair (padrão: true) |
mouse | Rolagem com a roda do mouse (padrão: true) |
exitOnCtrlC | Padrão: true |
fps | Limite de quadros (padrão: 60) |
patchConsole | Retenção de console.* até sair (padrão: true) |
theme / transparent | Como 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
| Recurso | DevTools | Terminal |
|---|---|---|
| Cadência de quadros | ~15 fps | Até fps |
| Tamanho da grade | Console acoplado | Janela do terminal |
<Image src> | Carregamento via canvas | Uso de pixels |
console.log | Seus quadros | Retenção até sair |