ターミナルでの実行

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には、次のように使います。

cli.tsxtsx
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 / transparentcreateConsoleRoot と同じ

出力

各フレームの差分を行ごとに計算します。変更された行だけを書き込み、同期出力マーカーで囲むため、対応するターミナルでは描画途中のフレームが表示されません。アイドル状態のアプリは何も書き込みません。

入力

rawモードの標準入力は、ブラウザーが生成するものと同じイベントに解析されます。修飾キー付きの矢印キーやファンクションキー、Alt のキーの組み合わせ、ブラケットペースト、SGRマウスホイール、kittyキーボードプロトコルに対応します。ほかの場所でも使えるように、TerminalInputParser と parseTerminalInput をエクスポートしています。

違い

機能DevToolsターミナル
フレームの描画頻度約15fps最大 fps
グリッドサイズドッキングされたコンソールターミナルウィンドウ
<Image src>canvas経由で読み込みpixels を使用
console.logアプリのフレーム終了まで保留
GitHubでこのページを編集