Im Terminal ausführen
Rendere eine App Router-App oder eine einzelne Komponente im Terminal mit text run und renderToTerminal.
text run rendert eine App Router-App in einem Terminal. Layout, Komponenten, Keymaps und Route-Handler werden gemeinsam mit dem Browser genutzt. Die Ausgabe erfolgt als Truecolor-ANSI statt als %c-Spans.
text run # render ./app at /text run --path /logs # start on another routeDrücke Ctrl+C zum Beenden. text run benötigt Bun.
text run
text run importiert jede Datei in app/, mountet den App Router mit einer History im Arbeitsspeicher und zeichnet ihn im Vollbild. <Link>, useRouter(), notFound() und redirect() funktionieren unverändert.
Same-Origin-Aufrufe mit fetch("/api/...") führen deine route.ts-Handler im selben Prozess aus, genau so, wie text dev sie bereitstellen würde. Andere URLs gehen über das Netzwerk.
renderToTerminal
Für eine einzelne Komponente oder deine eigene CLI:
import { renderToTerminal } from "@textjs/app/terminal";import { App } from "./app";const app = await renderToTerminal(<App />);await app.waitUntilExit();useApp().exit() unmountet die App und stellt das Terminal wieder her.
| Option | Beschreibung |
|---|---|
stdin / stdout | Standard: process.stdin / process.stdout |
cols / rows | Feste Größe (Standard: an das Terminal anpassen) |
altScreen | Scrollback beim Beenden wiederherstellen (Standard: true) |
mouse | Scrollen mit dem Mausrad (Standard: true) |
exitOnCtrlC | Standard: true |
fps | Frame-Obergrenze (Standard: 60) |
patchConsole | console.* bis zum Beenden zurückhalten (Standard: true) |
theme / transparent | Wie in createConsoleRoot |
Ausgabe
Jeder Frame wird zeilenweise mit dem vorherigen verglichen. Nur geänderte Zeilen werden geschrieben, umschlossen von Markierungen für synchronisierte Ausgabe, sodass Terminals mit entsprechender Unterstützung nie einen halb gezeichneten Frame anzeigen. Apps im Leerlauf schreiben nichts.
Eingabe
Standardeingaben im Raw-Modus werden in dieselben Ereignisse umgewandelt, die der Browser erzeugt: Pfeil- und Funktionstasten mit Modifikatoren, Alt-Kombinationen, Bracketed Paste, SGR-Mausrad und das Kitty-Tastaturprotokoll. TerminalInputParser und parseTerminalInput werden exportiert, falls du sie anderswo benötigst.
Unterschiede
| Funktion | DevTools | Terminal |
|---|---|---|
| Frame-Taktung | ~15 fps | Bis zu fps |
| Rastergröße | Angedockte Konsole | Terminalfenster |
<Image src> | Laden über Canvas | pixels verwenden |
console.log | Deine Frames | Bis zum Beenden zurückgehalten |