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 routeAppuyez 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 :
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.
| Option | Description |
|---|---|
stdin / stdout | Par défaut : process.stdin / process.stdout |
cols / rows | Taille fixe (par défaut : suivre le terminal) |
altScreen | Restauration de l’historique de défilement à la sortie (par défaut true) |
mouse | Défilement à la molette (par défaut true) |
exitOnCtrlC | Par défaut true |
fps | Limite de frames (par défaut 60) |
patchConsole | Mise en attente de console.* jusqu’à la sortie (par défaut true) |
theme / transparent | Comme 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é | DevTools | Terminal |
|---|---|---|
| Cadence des frames | ~15 fps | Jusqu’à fps |
| Taille de la grille | Console ancrée | Fenêtre du terminal |
<Image src> | Chargement via canvas | Utilisation de pixels |
console.log | Vos frames | Mise en attente jusqu’à la sortie |