SuperAPI AI 工具集

tauri

编程与开发

查看项目

更新于 10-15 21:38

技能介绍

这是 Tauri 桌面应用开发模式的参考技能。Tauri 是以 Rust 为后端、Web 为前端的桌面应用框架。

用途:涉及 Tauri 命令行为、权限、capabilities、CSP、资源协议、路径 API、插件文件系统行为或 IPC 语义影响正确性时,应先在权威来源求证再依赖记忆,避免仅凭记忆改代码。

主要能力与要点:

  • 命令、权限与安全:用 #[tauri::command] 暴露聚焦的 Rust API,经 generate_handler! 注册,可失败工作返回 Result<T,E>。在 Rust 侧校验命令输入,TypeScript 调用方不是信任边界。capabilities 保持最小权限,限定到需要的窗口或 webview,避免宽泛通配。CSP、devCsp、asset 协议、convertFileSrc、freezePrototype、远程 IPC 属安全敏感配置。长期存在的 Rust 对象应作为 Tauri 资源配前端 ResourceId,不要通过命令响应序列化复杂长生命对象。
  • Webview CSP:切勿发布 csp: null;connect-src 价值最高,锁定到 API 源加 Tauri IPC,可阻止注入脚本外泄内存中的密钥。同时设置 csp(生产)与 devCsp(开发覆盖)。connect-src 必须含 ipc: http://ipc.localhost 否则 invoke() 失效;仅在启用 asset 协议时列出 asset: / http://asset.localhost;需对 tauri dev 与发布构建分别实测并观察 CSP 违规。
  • 类型化 IPC 与生成绑定:使用 tauri-specta 时保持 Rust 命令注册表、生成的 TypeScript 绑定与手写前端 wrapper 同步;事件负载也要注册;bindings.gen.ts 视为派生输出,仅在 IPC 表面有意变更时提交再生成结果。返回原始 tauri::ipc::Response 的命令无法由 specta 生成,走单独 generate_handler! 路由并配手写 TS wrapper。校验命令示例:cargo check --manifest-path apps/epicenter/src-tauri/Cargo.toml 与 cargo test --manifest-path apps/epicenter/src-tauri/Cargo.toml export_types。
  • 路径处理:先判断执行上下文,Tauri 前端用 @tauri-apps/api/path,Node.js/Bun 用 Node path 模块。提供 join、dirname、basename、extname、normalize、resolve、isAbsolute 及 sep()、delimiter() 等平台常量;appLocalDataDir、appDataDir、appConfigDir、appCacheDir、appLogDir、tempDir、resourceDir、resolveResource 等基础目录。多数路径助手为异步(经 IPC),sep() 与 delimiter() 在 Tauri v2 为同步。
  • 文件系统操作:使用 @tauri-apps/plugin-fs 配合路径 API,如 mkdir、readFile、writeFile。
  • 原生所有权边界:数据由原生侧持有时优先用应用自有标识符而非前端可控路径;移除 capability 时应同步清理过时文档与 UI。前端可记住用户意图,Rust 强制文件系统边界。

限制:以上为模式参考,具体行为须以本地生成的绑定、已安装 Rust crate、TypeScript 类型或官方文档为准;其他未提供信息暂未提供。