Ink 驱动的 React CLI 指南
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/ink-react-cli-guide。
技能介绍
要解决的问题
写命令行工具时,很多人要重新学一套终端范式:原始的字符串拼接、手工管理光标位置、自己解析按键,最后代码散成一地。React 工程师手里明明有组件、状态和钩子,却只能另起炉灶。
终端 UI 也是 UI——这句话就是本技能的起点。它想让你用写 React 的心智模型去做交互式 CLI,而不是把前端经验丢掉。
技能如何工作
核心基于 Ink:把 React 渲染到终端,底层由 Yoga 负责 Flexbox 布局。技能把它拆成四步:
- 声明组件:用函数组件返回
JSX,元素直接对应终端里的布局和文字。 - 管理状态:用
useState/useReducer持有交互状态,重渲染会自动反映到终端。 - 布局用 Flexbox:
flexDirection、justifyContent这些属性照搬前端经验,布局思维不用重学。 - 副作用与输入:用
useEffect跑异步任务,用useInput捕获键盘,把交互拼起来。
适用场景包括带进度条、表单、列表的交互式 CLI,团队里 React 人多想复用技能,以及需要可组合的命令界面。
注意点与适用边界
几个常见的坑,值得提前知道:
- 把 CLI 当网页:终端没有 hover 和点击坐标,交互只能靠键盘,照搬 DOM 事件会失效。
- 重渲染抖动:频繁
setState会让整屏刷新闪烁,需要节流或做局部更新。 - 异步阻塞:长任务没让出主循环,界面直接卡住;要拆成副作用加状态。
- 依赖体积:为一个小工具引入整套 React 生态,启动会变慢,按需精简。
收尾时对照一份检查清单:组件拆分清晰、键盘交互完整、长任务不阻塞渲染、退出时清理副作用。
需要说明的是,本技能属于开发方法论,AI 生成的内容应以 Ink 官方文档为准;复杂交互场景下,可维护性和退出清理比功能完成度更重要。
使用场景
- 维护团队内部脚手架,用 `useState` 管理交互状态并通过 `useInput` 捕获键盘输入
- 开发 CLI 安装向导,用函数组件拼装交互表单并让重渲染反映到终端
- 需要可控退出的终端工具,用 `useEffect` 异步拉取数据并在退出时清理副作用
- 用 Flexbox 属性 `flexDirection` 与 `justifyContent` 布局终端界面,复用前端排版经验
适合人员
- React 工程师想把组件、状态、钩子这套前端心智模型用到命令行工具,而不是学全新范式
- 做命令行工具的开发者需要带进度条、表单或列表的交互界面,希望用 Flexbox 布局
- 前端背景居多的团队想复用现有 React 技能,构建可组合的命令界面
- 需要交付交互式 CLI 并关注可维护性与退出清理的工程师