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 route

Premi 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:

cli.tsxtsx
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.

OpzioneDescrizione
stdin / stdoutValori predefiniti process.stdin / process.stdout
cols / rowsDimensioni fisse (predefinito: seguire il terminale)
altScreenRipristino della cronologia di scorrimento all’uscita (predefinito true)
mouseScorrimento con la rotella (predefinito true)
exitOnCtrlCValore predefinito true
fpsLimite dei frame (predefinito 60)
patchConsoleAccumulo di console.* fino all’uscita (predefinito true)
theme / transparentCome 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àDevToolsTerminale
Frequenza dei frame~15 fpsFino a fps
Dimensioni della grigliaConsole ancorataFinestra del terminale
<Image src>Caricamento tramite canvasUso di pixels
console.logI tuoi frameAccumulo fino all’uscita
Modifica questa pagina su GitHub