Esecuzione in un terminale
Renderizza un’app App Router o un singolo componente in un terminale con text run e renderToTerminal.
text run renderizza un’app App Router in un terminale. Layout, componenti, mappe dei tasti e route handler sono condivisi con il browser. L’output usa ANSI truecolor invece degli span %c.
text run # render ./app at /text run --path /logs # start on another routePremi Ctrl+C per uscire. text run richiede Bun.
text run
text run importa ogni file in app/, monta App Router con una cronologia in memoria e lo disegna a schermo intero. <Link>, useRouter(), notFound() e redirect() funzionano senza modifiche.
Le chiamate fetch("/api/...") alla stessa origine eseguono gli handler route.ts nello stesso processo, esattamente come li servirebbe text dev. Gli altri URL passano dalla rete.
renderToTerminal
Per un singolo componente o per la tua CLI:
import { renderToTerminal } from "@textjs/app/terminal";import { App } from "./app";const app = await renderToTerminal(<App />);await app.waitUntilExit();useApp().exit() smonta l’app e ripristina il terminale.
| Opzione | Descrizione |
|---|---|
stdin / stdout | Valori predefiniti process.stdin / process.stdout |
cols / rows | Dimensioni fisse (predefinito: seguire il terminale) |
altScreen | Ripristino della cronologia di scorrimento all’uscita (predefinito true) |
mouse | Scorrimento con la rotella (predefinito true) |
exitOnCtrlC | Valore predefinito true |
fps | Limite dei frame (predefinito 60) |
patchConsole | Accumulo di console.* fino all’uscita (predefinito true) |
theme / transparent | Come in createConsoleRoot |
Output
Ogni frame viene confrontato riga per riga con il precedente. Vengono scritte solo le righe modificate, racchiuse in marcatori di output sincronizzato, così i terminali che li supportano non mostrano mai un frame disegnato a metà. Le app inattive non scrivono nulla.
Input
L’input di stdin in modalità raw viene interpretato e convertito negli stessi eventi prodotti dal browser: frecce e tasti funzione con modificatori, combinazioni con Alt, incolla delimitato, rotella del mouse SGR e protocollo di tastiera kitty. TerminalInputParser e parseTerminalInput sono esportati se ti servono altrove.
Differenze
| Funzionalità | DevTools | Terminale |
|---|---|---|
| Frequenza dei frame | ~15 fps | Fino a fps |
| Dimensioni della griglia | Console ancorata | Finestra del terminale |
<Image src> | Caricamento tramite canvas | Uso di pixels |
console.log | I tuoi frame | Accumulo fino all’uscita |