ターミナルでの実行
text runとrenderToTerminalで、App Routerアプリや単一のコンポーネントをターミナルに描画します。
text run はApp Routerアプリをターミナルに描画します。レイアウト、コンポーネント、キーマップ、ルートハンドラーはブラウザーと共通です。出力には %c スパンではなくトゥルーカラーANSIを使います。
text run # render ./app at /text run --path /logs # start on another route終了するには Ctrl+C を押します。text run にはBunが必要です。
text run
text run は app/ 内のすべてのファイルをインポートし、メモリー内の履歴を使ってApp Routerをマウントして、全画面に描画します。<Link>、useRouter()、notFound()、redirect() はそのまま動作します。
同一オリジンの fetch("/api/...") 呼び出しは、text dev がリクエストを処理するときと同じように、route.ts ハンドラーをプロセス内で実行します。それ以外のURLにはネットワーク経由でアクセスします。
renderToTerminal
単一のコンポーネントや独自のCLIには、次のように使います。
import { renderToTerminal } from "@textjs/app/terminal";import { App } from "./app";const app = await renderToTerminal(<App />);await app.waitUntilExit();useApp().exit() はアンマウントしてターミナルを元の状態に戻します。
| オプション | 説明 |
|---|---|
stdin / stdout | デフォルトは process.stdin / process.stdout |
cols / rows | 固定サイズ(デフォルトはターミナルに追従) |
altScreen | 終了時にスクロールバックを復元(デフォルトは true) |
mouse | ホイールスクロール(デフォルトは true) |
exitOnCtrlC | デフォルトは true |
fps | フレームレートの上限(デフォルトは 60) |
patchConsole | 終了まで console.* の出力を保留(デフォルトは true) |
theme / transparent | createConsoleRoot と同じ |
出力
各フレームの差分を行ごとに計算します。変更された行だけを書き込み、同期出力マーカーで囲むため、対応するターミナルでは描画途中のフレームが表示されません。アイドル状態のアプリは何も書き込みません。
入力
rawモードの標準入力は、ブラウザーが生成するものと同じイベントに解析されます。修飾キー付きの矢印キーやファンクションキー、Alt のキーの組み合わせ、ブラケットペースト、SGRマウスホイール、kittyキーボードプロトコルに対応します。ほかの場所でも使えるように、TerminalInputParser と parseTerminalInput をエクスポートしています。
違い
| 機能 | DevTools | ターミナル |
|---|---|---|
| フレームの描画頻度 | 約15fps | 最大 fps |
| グリッドサイズ | ドッキングされたコンソール | ターミナルウィンドウ |
<Image src> | canvas経由で読み込み | pixels を使用 |
console.log | アプリのフレーム | 終了まで保留 |