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 route

Drü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:

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

OptionBeschreibung
stdin / stdoutStandard: process.stdin / process.stdout
cols / rowsFeste Größe (Standard: an das Terminal anpassen)
altScreenScrollback beim Beenden wiederherstellen (Standard: true)
mouseScrollen mit dem Mausrad (Standard: true)
exitOnCtrlCStandard: true
fpsFrame-Obergrenze (Standard: 60)
patchConsoleconsole.* bis zum Beenden zurückhalten (Standard: true)
theme / transparentWie 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

FunktionDevToolsTerminal
Frame-Taktung~15 fpsBis zu fps
RastergrößeAngedockte KonsoleTerminalfenster
<Image src>Laden über Canvaspixels verwenden
console.logDeine FramesBis zum Beenden zurückgehalten
Diese Seite auf GitHub bearbeiten