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 routeNaciś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:
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.
| Opcja | Opis |
|---|---|
stdin / stdout | Domyślnie process.stdin / process.stdout |
cols / rows | Stały rozmiar (domyślnie: zgodny z terminalem) |
altScreen | Przywracanie historii przewijania przy wyjściu (domyślnie true) |
mouse | Przewijanie kółkiem (domyślnie true) |
exitOnCtrlC | Domyślnie true |
fps | Limit klatek (domyślnie 60) |
patchConsole | Wstrzymywanie console.* do wyjścia (domyślnie true) |
theme / transparent | Jak 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
| Funkcja | DevTools | Terminal |
|---|---|---|
| Tempo klatek | ~15 kl./s | Do fps |
| Rozmiar siatki | Zadokowana konsola | Okno terminala |
<Image src> | Ładowanie przez canvas | Użyj pixels |
console.log | Twoje klatki | Wstrzymane do wyjścia |