- 纯 TypeScript 全栈 —— 前后端都是 TS。没有 Rust 工具链、没有交叉编译;原生层(窗口宿主 + 运行时)已随 CLI 预编译好。
- 真的轻量 —— 后端运行时 txiki.js 仅 ~2MB,渲染用系统自带 WebView,不捆绑 Chromium,安装包 5MB 级。
- Tauri 用户零成本迁移 —— API 自
@tauri-apps/api忠实移植为@zturnlibs/ztron-api,IPC/事件/命令/插件协议同构,迁移指南半天搬完。 - 生态完整 —— 25+ 内置插件(fs/http/store/sql/shell/tray/menu/dialog/updater…)、ACL 能力权限体系、
ztron://自定义协议、自动更新 + 签名 + dmg 打包。
前置:macOS(Apple Silicon 已验证)+ Node.js ≥ 20。原生链已随 CLI 预编译,无需 clone 本仓库、无需编译、无需配环境变量。
npm i -g @zturnlibs/ztron-cli
ztron init my-app --template react-ts # 模板:vanilla | react-ts | vue-ts | svelte
cd my-app && pnpm install
ztron dev # 原生窗口弹出打包、体检随时可用:
ztron build # 打包 + ad-hoc 签名 ZtronApp.app + dmg
ztron doctor # 环境五项体检,FAIL 自带修复提示遇到问题跑 ztron doctor;完整安装说明见文档。
| 特性 | 说明 |
|---|---|
| 声明式窗口 | ztron.conf.json 里声明启动窗口(尺寸/位置/透明/装饰…),双层数据校验 |
| 全模块 HMR | Vite dev server + ztron:// 自定义协议(WKURLSchemeHandler),模块级热替换 |
| 类型安全命令 | ztron codegen 生成 typed invoke 绑定,前后端契约不漂移 |
| ACL 能力权限 | capability 文件声明权限面;fs/http 全部 PathScope/HttpScope 收敛 |
| 多窗口 | WebviewWindow 运行时创建/销毁、label 路由、窗口注册表 |
| 系统 API 全家桶 | tray/menu/dialog/clipboard/notification/global-shortcut/deep-link/fs.watch/拖放… |
| 生产打包 | tjs compile 独立可执行 + .app/dmg + ad-hoc/Developer ID 签名 + 自动更新 |
| 三层测试 | surface/unit/integration 三层,ztron check 退出码化回归(86 项确定性检查) |
┌──────────────────────────┐ TCP/JSON ┌───────────────────────────────────┐
│ ztron-host (native C) │◄──────────►│ tjs backend (txiki.js, async) │
│ 系统 WebView + GUI 循环 │ │ @zturnlibs/ztron-core │
│ window/tray/menu/dialog │ │ IPC / events / commands / ACL │
└──────────────────────────┘ └───────────────────────────────────┘
frontend: Vite 页面 → @zturnlibs/ztron-api → invoke/listen/Channel/fs/http/…
packaging: ztron build → tjs compile 后端 → macOS .app / dmg(签名)
深度解析见 DESIGN.md(架构决策、技术发现、翻译对照表)。
| 包 | 职责 |
|---|---|
@zturnlibs/ztron-api |
前端 API(自 @tauri-apps/api 移植):fs/http/os/store/log/shell/window/tray/menu/dialog/updater… |
@zturnlibs/ztron-core |
主进程核心:IPC、events、Channel、commands、ACL、PathScope、25+ 插件、MockRuntime |
@zturnlibs/ztron-runtime-ffi |
HostRuntime socket 适配(双进程模型)+ FFI 参考绑定 |
@zturnlibs/ztron-cli |
init / dev / build / check / codegen / doctor / bench |
@zturnlibs/ztron-driver |
WebDriver 中继(W3C 协议,外部自动化驱动 Ztron 应用) |
ztron init --template <name> 可选模板:
| 模板 | 技术栈 |
|---|---|
vanilla |
TS + Vite(最小起点) |
react-ts |
React 19 + Tailwind v4 |
vue-ts |
Vue 3.5 + Tailwind v4 |
svelte |
Svelte 5 runes + Tailwind v4 |
examples/ 下有 8 个可运行示例,最值得看的是 showcase——34 张交互卡片现场演示全部插件 API(pnpm --filter @zturnlibs/ztron-example-showcase dev),另有 hello / multiwin / react-demo / vue-demo / svelte-demo / bench / menuprobe。逐个讲解见文档示例页。
| 平台 | 状态 |
|---|---|
| macOS(Apple Silicon) | ✅ 完整验证(Intel 未验证,可尝试) |
| Windows(WebView2) | 🚧 host 骨架已就位,打包链待接入 |
| Linux(WebKitGTK) | 🚧 host 骨架已就位,打包链待接入 |
| Mobile(Android/iOS) | 📋 规划中 |
pnpm install # 工作区依赖
scripts/build-native.sh # 编译原生链(macOS,一次性)
pnpm --filter @zturnlibs/ztron-example-hello dev # 在 monorepo 内跑示例
pnpm test # 150 项测试(surface/unit/core 三层)三层测试面向"特性 + API 100% 覆盖":surface 保证框架注册的命令与 API 导出面零偏差;unit 经 MockRuntime 全量路由;integration 驱动真实 host + WebView(ztron check 86 项确定性检查,exit code 可回归)。设计详见 tests/README.md。
性能基线(冷/热启动、invoke P50/P95、Channel 吞吐、窗口创建、RSS):
node packages/cli/dist/index.js bench --runs 3M0–P30 全部完成:86 项确定性检查 FULL_OK / exit 0。完整开发日志(每个阶段交付了什么、验收标准、踩过的坑)见 DESIGN.md §7;与 Tauri 的能力差距与后续规划见 ROADMAP.md。