开发者文档/开发指南

CLI 与本地开发

管理开发会话、连接已有开发服务,并通过终端定位工程配置问题。

核对日期:2026 年 9 月 11 日

本页目录

日常命令#

在包含 curio.json 的目录或它的子目录执行工程命令。checkdevpack 向上查找最近的 Manifest,到 Git 根目录停止;显式传入工程目录后,不再向上查找。

命令实际行为
trove curio init [new-directory]新建 Web 或静态工程,不合并已有目录
trove curio check [directory]读取配置,检查工具和依赖,不构建、不安装
trove curio dev [directory]连接 Host,启动开发会话并输出日志
trove curio pack [directory]执行声明的构建,校验 staging 内容并生成包
trove curio install [file]等待 Host 安装完成;省略文件时查找当前工程的包产物
trove contract generate [file]从 Contract 生成 TypeScript
trove protocol test启动隔离的 Backend 协议测试

每层命令支持 --help。本地版本与文档不一致时,先查看已安装可执行文件的帮助信息。

初始化选项#

sh
trove curio init my-tool --name "My Tool" --id dev.example.my-tool --template web --package-manager pnpm --yes --install
trove curio init static-tool --template static --yes

--template 接受 webstatic--package-manager 接受 npmpnpmyarnbun,Web 默认 npm。--yes 接受推荐配置,--install 明确执行依赖安装,--no-install 跳过安装。

非交互初始化使用 --yes,或用 --no-input 并提供 --name--template。问答取消时不创建文件。若创建后安装依赖失败,工程会保留,可重新执行安装。

端口与多开发会话#

生成的 Web 模板把 development.ui.url 设为 http://127.0.0.1:0,由 Host 分配端口,Vite 读取 TROVE_DEV_PORT

ts
server: {
  host: "127.0.0.1",
  port: Number(process.env.TROVE_DEV_PORT || 0),
  strictPort: true,
}

这是 Vite 配置片段。在不同终端开发不同 Curio,确保各工程 ID 不同;重复启动同一个 ID 会报告冲突。已有固定端口项目要自行分配不同端口。

sh
trove curio dev --no-start-ui --ui-url http://127.0.0.1:5173
trove curio dev --backend managed
trove curio dev --backend external

--no-start-ui 连接已启动的 UI 服务。managed 使用配置的 Backend 启动命令;external 由你使用开发会话信息自行启动进程。参数覆盖只对这次运行生效,不写回 curio.json

Ctrl-C 只停止本次 CLI 会话管理的资源,Host 与其他 Curio 继续运行,外部启动的 UI 服务不会被停止。external Backend 会收到 shutdown 并关闭会话;Host 不强制杀死其进程,但遵守协议的 Backend 会自行退出。终端连接丢失后,Host 也会回收对应会话。

查看失败原因#

sh
trove curio check --json
trove --verbose curio dev

check 汇总 Manifest、engine、Contract、入口、工具链与依赖问题。配置了开发服务或构建命令时,不要求生产 UI 已存在。--verbose 展示完整安装、构建和启动日志。

需要同时查看 WebView 错误和进程输出时,打开 Trove 内的 Curio 调试控制台,详见测试与调试

脚本与 CI#

sh
trove curio check --json
trove curio pack --dry-run --json
trove curio pack --no-input --overwrite --json

--dry-run 只输出计划,不构建、不写包,也不能验证未来才生成的产物。只有确实打算替换输出文件时,才在自动化中使用 --overwrite

checkpackinstall 支持 --json:机器结果写 stdout,诊断写 stderr。可能发起问答的 initdevpackinstallcontract generate 支持 --no-input。CI 与非 TTY 不发起交互问答,NO_COLOR 关闭终端颜色。

退出码含义
0成功
1执行或校验失败
2参数错误或非交互输入缺失
130用户取消

打包不需要 GUI;开发与安装会连接 Host。输出路径和安装选择见打包参数