Ejecutar en una terminal

Renderiza una app de App Router o un componente en una terminal con text run y renderToTerminal.

text run renderiza una app de App Router en una terminal. El layout, los componentes, los mapas de teclas y los manejadores de ruta se comparten con el navegador. La salida es ANSI de color verdadero en lugar de spans %c.

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

Pulsa Ctrl+C para salir. text run necesita Bun.

text run

text run importa todos los archivos de app/, monta el App Router con un historial en memoria y lo dibuja a pantalla completa. <Link>, useRouter(), notFound() y redirect() funcionan sin cambios.

Las llamadas a fetch("/api/...") del mismo origen ejecutan tus manejadores route.ts dentro del proceso, exactamente como los serviría text dev. Las demás URL van a la red.

renderToTerminal

Para un solo componente o tu propia CLI:

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

useApp().exit() desmonta y restaura la terminal.

OpciónDescripción
stdin / stdoutPor defecto, process.stdin / process.stdout
cols / rowsTamaño fijo (por defecto: adaptado a la terminal)
altScreenRestauración del historial de desplazamiento al salir (por defecto, true)
mouseDesplazamiento con la rueda (por defecto, true)
exitOnCtrlCPor defecto, true
fpsLímite de fotogramas (por defecto, 60)
patchConsoleRetención de console.* hasta salir (por defecto, true)
theme / transparentComo en createConsoleRoot

Salida

Cada fotograma se compara fila por fila con el anterior. Solo se escriben las filas modificadas, envueltas en marcadores de salida sincronizada para que las terminales que los admiten nunca muestren un fotograma a medio dibujar. Las apps inactivas no escriben nada.

Entrada

La entrada estándar en modo raw se analiza para generar los mismos eventos que produce el navegador: flechas y teclas de función con modificadores, combinaciones con Alt, pegado delimitado, rueda del ratón SGR y el protocolo de teclado kitty. TerminalInputParser y parseTerminalInput se exportan por si los necesitas en otro lugar.

Diferencias

FunciónDevToolsTerminal
Ritmo de fotogramas~15 fpsHasta fps
Tamaño de la cuadrículaConsola acopladaVentana de la terminal
<Image src>Carga mediante canvasUso de pixels
console.logTus fotogramasRetenido hasta salir
Editar esta página en GitHub