Uruchamianie w terminalu

Renderuj aplikację App Router lub pojedynczy komponent w terminalu za pomocą text run i renderToTerminal.

text run renderuje aplikację App Router w terminalu. Layout, komponenty, mapy klawiszy i handlery tras są współdzielone z przeglądarką. Wyjście używa ANSI truecolor zamiast spanów %c.

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

Naciśnij Ctrl+C, aby zakończyć. text run wymaga środowiska Bun.

text run

text run importuje każdy plik w app/, montuje App Router z historią w pamięci i rysuje go na pełnym ekranie. <Link>, useRouter(), notFound() i redirect() działają bez zmian.

Wywołania fetch("/api/...") do tego samego źródła uruchamiają twoje handlery route.ts w tym samym procesie, dokładnie tak, jak obsługiwałoby je text dev. Pozostałe adresy URL trafiają do sieci.

renderToTerminal

Dla pojedynczego komponentu lub własnego CLI:

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

useApp().exit() odmontowuje aplikację i przywraca stan terminala.

OpcjaOpis
stdin / stdoutDomyślnie process.stdin / process.stdout
cols / rowsStały rozmiar (domyślnie: zgodny z terminalem)
altScreenPrzywracanie historii przewijania przy wyjściu (domyślnie true)
mousePrzewijanie kółkiem (domyślnie true)
exitOnCtrlCDomyślnie true
fpsLimit klatek (domyślnie 60)
patchConsoleWstrzymywanie console.* do wyjścia (domyślnie true)
theme / transparentJak w createConsoleRoot

Wyjście

Każda klatka jest porównywana wiersz po wierszu. Zapisywane są tylko zmienione wiersze, otoczone znacznikami synchronizacji wyjścia, dzięki czemu terminale, które je obsługują, nigdy nie pokazują częściowo narysowanej klatki. Bezczynne aplikacje niczego nie zapisują.

Wejście

Wejście stdin w trybie surowym jest parsowane na te same zdarzenia, które generuje przeglądarka: strzałki i klawisze funkcyjne z modyfikatorami, kombinacje z Alt, wklejanie w trybie bracketed paste, kółko myszy SGR i protokół klawiatury kitty. TerminalInputParser i parseTerminalInput są eksportowane, jeśli potrzebujesz ich gdzie indziej.

Różnice

FunkcjaDevToolsTerminal
Tempo klatek~15 kl./sDo fps
Rozmiar siatkiZadokowana konsolaOkno terminala
<Image src>Ładowanie przez canvasUżyj pixels
console.logTwoje klatkiWstrzymane do wyjścia
Edytuj tę stronę w serwisie GitHub