在终端中运行

使用 text run 和 renderToTerminal 在终端中渲染 App Router 应用或单个组件。

text run 在终端中渲染 App Router 应用。布局、组件、按键映射和路由处理程序与浏览器共用。输出采用真彩色 ANSI,而非 %c span。

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/...") 调用在进程内运行你的 route.ts 处理程序,与 text dev 提供服务时的行为完全一致。其他 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 / transparent与 createConsoleRoot 相同

输出

每一帧都逐行比较差异。只写入有变化的行,并用同步输出标记包裹,确保支持这些标记的终端不会显示只绘制了一半的帧。空闲应用不写入任何内容。

输入

原始模式的标准输入会解析为与浏览器产生的相同事件:带修饰键的方向键和功能键、Alt 组合键、括号粘贴、SGR 鼠标滚轮和 kitty 键盘协议。TerminalInputParser 和 parseTerminalInput 均已导出,可在其他地方使用。

差异

功能DevTools终端
帧率约 15 fps最高为 fps
网格尺寸停靠的控制台终端窗口
<Image src>通过 canvas 加载使用 pixels
console.log你的帧暂存直到退出
在 GitHub 上编辑此页