Exécution dans un terminal

Affichez une application App Router ou un composant seul dans un terminal avec text run et renderToTerminal.

text run affiche une application App Router dans un terminal. Le layout, les composants, les keymaps et les gestionnaires de route sont partagés avec le navigateur. La sortie utilise ANSI en couleurs vraies plutôt que des spans %c.

text run              # render ./app at /text run --path /logs # start on another route

Appuyez sur Ctrl+C pour quitter. text run nécessite Bun.

text run

text run importe chaque fichier de app/, monte l’App Router avec un historique en mémoire et l’affiche en plein écran. <Link>, useRouter(), notFound() et redirect() fonctionnent sans modification.

Les appels fetch("/api/...") de même origine exécutent vos gestionnaires route.ts dans le même processus, exactement comme le ferait text dev. Les autres URL passent par le réseau.

renderToTerminal

Pour un seul composant ou votre propre CLI :

cli.tsxtsx
import { renderToTerminal } from "@textjs/app/terminal";import { App } from "./app";const app = await renderToTerminal(<App />);await app.waitUntilExit();

useApp().exit() démonte l’application et restaure le terminal.

OptionDescription
stdin / stdoutPar défaut : process.stdin / process.stdout
cols / rowsTaille fixe (par défaut : suivre le terminal)
altScreenRestauration de l’historique de défilement à la sortie (par défaut true)
mouseDéfilement à la molette (par défaut true)
exitOnCtrlCPar défaut true
fpsLimite de frames (par défaut 60)
patchConsoleMise en attente de console.* jusqu’à la sortie (par défaut true)
theme / transparentComme dans createConsoleRoot

Sortie

Chaque frame est comparée à la précédente, ligne par ligne. Seules les lignes modifiées sont écrites, entourées de marqueurs de sortie synchronisée pour que les terminaux qui les prennent en charge n’affichent jamais une frame partiellement dessinée. Les applications inactives n’écrivent rien.

Entrée

L’entrée standard en mode brut est analysée pour produire les mêmes événements que le navigateur : flèches et touches de fonction avec modificateurs, combinaisons Alt, collage encadré, molette de souris SGR et protocole clavier kitty. TerminalInputParser et parseTerminalInput sont exportés si vous en avez besoin ailleurs.

Différences

FonctionnalitéDevToolsTerminal
Cadence des frames~15 fpsJusqu’à fps
Taille de la grilleConsole ancréeFenêtre du terminal
<Image src>Chargement via canvasUtilisation de pixels
console.logVos framesMise en attente jusqu’à la sortie
Modifier cette page sur GitHub