用途:在本地构建的 Temporal 服务器上运行 UI 进行开发,而不是使用内置的 CLI 开发服务器。需要两个终端分别运行服务。
终端1——Temporal 服务器:在本地 temporalio/temporal 仓库中执行 make start,会用内存 SQLite 构建并启动服务器。如需指定分支,先 git checkout <branch-name>,再执行 make bins(已构建时输出 "Nothing to be done" 并正常退出)和 make start。服务器 gRPC 监听 7233,HTTP 监听 7243。
终端2——UI 开发服务器:在 UI 仓库中使用 pnpm dev:local-temporal 代替默认的 dev 脚本,它会加载 .env.local-temporal,将 UI 指向本地服务器而非自启服务。pnpm dev(等同 pnpm dev:ui-server)会捆绑启动 Temporal 服务器,而 pnpm dev:local-temporal 跳过该步骤,连接已运行在配置端口上的服务。
限制与注意:处理未发布功能时,需保持 ui-server 与 Temporal 服务器分支同步。ui-server(server/)是独立 Go 二进制,充当 grpc-gateway,将 HTTP/JSON 解码为 proto 消息并通过 gRPC 转发;其 proto 描述符在编译时从自身 server/go.mod 固化。若 Temporal 分支使用更新的 go.temporal.io/api 版本,ui-server 会以 "unknown field" 拒绝新 HTTP 字段。切换含 API 变更的分支时:用 grep "go.temporal.io/api" ~/code/temporal/go.mod 查看版本;在 server/ 下执行 go get go.temporal.io/api@<version> 更新 server/go.mod;运行 go build -o ui-server ./cmd/server 重建二进制;然后重启 pnpm dev:local-temporal 以加载新二进制。