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 routePulsa 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:
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ón | Descripción |
|---|---|
stdin / stdout | Por defecto, process.stdin / process.stdout |
cols / rows | Tamaño fijo (por defecto: adaptado a la terminal) |
altScreen | Restauración del historial de desplazamiento al salir (por defecto, true) |
mouse | Desplazamiento con la rueda (por defecto, true) |
exitOnCtrlC | Por defecto, true |
fps | Límite de fotogramas (por defecto, 60) |
patchConsole | Retención de console.* hasta salir (por defecto, true) |
theme / transparent | Como 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ón | DevTools | Terminal |
|---|---|---|
| Ritmo de fotogramas | ~15 fps | Hasta fps |
| Tamaño de la cuadrícula | Consola acoplada | Ventana de la terminal |
<Image src> | Carga mediante canvas | Uso de pixels |
console.log | Tus fotogramas | Retenido hasta salir |