下面是 按模块分组 的 Tauri 1.x → 2.x(即 1.0 → 2.0)详尽变化对照表(Markdown 格式)。
配置(tauri.conf.json / tauri.conf.json5)
模块 | 1.x(旧)配置项 | 2.x(新)配置项或行为 | 说明 / 迁移建议 |
---|---|---|---|
顶层结构 | package > productName , package > version 在 tauri 内 |
移至 顶层对象 (即与 app 、bundle 同级) (Tauri) |
把 "package": { "productName": "...", "version": "..." } 变为 "productName": "...", "version": "..." |
二进制命名 | 可执行文件名自动与 productName 同名 |
不再自动重命名;如果你需要重命名,必须加顶层 "mainBinaryName": "<name>" (Tauri) |
若你之前依赖了自动重命名,则现在显式加这个字段 |
package 节点 |
配置中含 "package": { ... } |
package 对象被移除 (Tauri) |
删除该节点 |
根键名 | 配置中常见 tauri: { ... } |
根键改为 app: { ... } ,原 tauri 下多数配置移入 app (Tauri) |
将原来 tauri: 前缀改为 app: |
白名单机制 | tauri > allowlist: { ... } |
移除 allowlist ; 使用新的权限体系(permissions/scopes/abilities) (Tauri) |
删除 allowlist 节点,改用新机制 |
协议资源配置 | tauri > allowlist > protocol > assetScope |
移至 app > security > assetProtocol > scope (Tauri) |
更新配置路径 |
CLI 插件配置 | tauri > cli: { ... } |
移至 plugins > cli (Tauri) |
在 tauri.conf.json 中调整对应位置 |
窗口拖放(旧) | tauri > windows > fileDropEnabled |
重命名为 app > windows > dragDropEnabled (Tauri) |
更新字段名称 |
更新器(旧) | tauri > updater > active , tauri > updater > dialog |
active 、dialog 字段移除;整个 tauri > updater 移至 plugins > updater (Tauri) |
若使用自动更新功能,改为插件配置 |
系统托盘 | tauri > systemTray: { ... } |
移为 app > trayIcon: { ... } (Tauri) |
更新对应节点 |
打包配置位置 | tauri > bundle: { ... } |
bundle 移至顶层对象(与 app 同级) (Tauri) |
修改路径结构 |
打包配置细节 -- macOS DMG | tauri > bundle > dmg |
移至 bundle > macOS > dmg (Tauri) |
更新路径 |
打包配置细节 -- Linux deb/appimage | tauri > bundle > deb / appimage |
移至 bundle > linux > deb / bundle > linux > appimage (Tauri) |
更新路径 |
许可证文件字段 | tauri > bundle > macOS > license etc. |
移除旧字段,改用 bundle > licenseFile (Tauri) |
统一许可证字段 |
WebView 运行时路径(Windows) | tauri > bundle > windows > webviewFixedRuntimePath |
移除,改用 bundle > windows > webviewInstallMode (Tauri) |
更新字段名称 |
构建字段 -- 前端输出目录 | build > distDir |
重命名为 frontendDist (Tauri) |
更新字段名称 |
构建字段 -- 开发路径 | build > devPath |
重命名为 devUrl (Tauri) |
更新字段名称 |
Rust API 变化
模块 | 1.x(旧)API | 2.x(新)/变更 | 说明 / 迁移建议 |
---|---|---|---|
tauri::api 模块 |
大量功能集中在 tauri::api::... 下,如 tauri::api::file , tauri::api::http , tauri::api::process , tauri::api::shell 等 (Tauri) |
tauri::api 模块整体移除;对应功能多转为插件或者用 Rust 标准库/新模块代替 (Tauri) |
检查所有对 tauri::api 的引用,替换为新方式 |
文件系统 | tauri::api::file |
移除 → 使用 Rust 标准库 std::fs 或 tauri-plugin-fs 插件 (Tauri) |
更新代码路径 |
进程/Shell | tauri::api::process::current_binary , tauri::api::process::restart , tauri::api::process::Command , tauri::api::shell , tauri::Manager::shell_scope |
部分 API 移至 tauri::process ;其他移为 tauri-plugin-shell 插件 (Tauri) |
更新引用,安装/使用插件 |
路径解析 | tauri::api::path + tauri::PathResolver |
移为 tauri::Manager::path 方法调用 (Tauri) |
更新代码使用方式 |
菜单/托盘 API | Menu , SystemTray , SystemTrayHandle , MenuItem 等 |
多数移除或重构为 tauri::menu , tauri::tray 模块 (Tauri) |
更新引用路径与 API 用法 |
窗口 API | Window , WindowBuilder , WindowUrl |
重命名为 WebviewWindow , WebviewWindowBuilder , WebviewUrl ; Manager::get_window → get_webview_window (Tauri) |
更新窗口相关代码 |
插件初始化 API | Plugin::setup_with_config , Plugin::PluginApi old style |
Plugin::setup_with_config 被移除;Plugin::PluginApi 接收第二个参数为配置对象 (HackMD) |
更新插件实现代码 |
JS/TS(前端)API 变化
模块 | 1.x(旧)API模块/方法 | 2.x(新)/变更 | 说明 / 迁移建议 |
---|---|---|---|
核心模块名称 | @tauri-apps/api/tauri |
重命名为 @tauri-apps/api/core (Tauri) |
更新 import,比如: import { invoke } from "@tauri-apps/api/core"; |
内建模块迁移为插件 | 如 @tauri-apps/api/dialog , clipboard , fs , http , shell , process 等 |
多数移为 @tauri-apps/plugin-... 系列插件 (Tauri) |
安装并使用新的插件包,如: @tauri-apps/plugin-dialog |
模块名称更改 | @tauri-apps/api/window → @tauri-apps/api/webviewWindow (Tauri) |
更新 import 路径 | |
环境变量名称更改 | 多个 TAURI_... 环境变量重命名(如 TAURI_PATH_DEPTH → TAURI_CLI_CONFIG_DEPTH ) (Tauri) |
检查构建/脚本中的环境变量引用 | |
事件系统变更 | listen_global → listen_any ;emit 行为变更;新增 emitTo 等方法 (Tauri) |
若使用事件监听/emit,确认 API 使用方式 |
插件系统/模块拆分
模块 | 1.x(旧)结构 | 2.x(新)/变更 | 说明 /迁移建议 |
---|---|---|---|
核心功能内建 | 多数功能直接内建在 Tauri 核心(如 shell、fs、dialog、http) | 在 2.x 中这些转为官方插件 (如 tauri-plugin-shell , tauri-plugin-fs 等) (Tauri) |
安装并在 Cargo.toml 与 package.json 中添加插件相关依赖 |
插件初始化方式 | 老 API 插件初始化方式较为固定 | 新版本插件初始化有变化,如 Plugin::setup_with_config 被移除 (HackMD) |
更新 Rust 端插件初始化代码 |
多 WebView 支持 | 较少提及 | 引入"多 webview"支持(目前为不稳定/实验特性) (Tauri) | 如果使用多 webview 功能,需要启用对应 feature 并测试 |
打包/Updater 插件 | Updater 功能可能内建或部分依赖旧方式 | 迁移为 tauri-plugin-updater 插件 (Tauri) |
安装插件,更新相关配置 |
安全/权限 模型变化
模块 | 1.x(旧)机制 | 2.x(新)机制 /变更 | 说明 /迁移建议 |
---|---|---|---|
白名单机制 | 使用 allowlist (白名单)机制控制 API 访问权限,如 tauri > allowlist 节点 (Tauri) |
更换为 "permissions / scopes / abilities" 模型(能力/范围访问) ([Medium](https://medium.com/%40sevenall/tauri-2-0-released-can-it-beat-electron-this-time-c748663d90ea?utm_source=chatgpt.com "Tauri 2.0 released: Can it beat Electron this time? | by Sevenall Bin")) |
核心插件权限标识 | 核心插件可能无统一前缀或使用旧标识 | 在 2.x 中,核心插件标识必须以 core: 前缀 或使用 core:default 权限集 (Tauri) |
如 "path:default" → "core:path:default" 或仅 "core:default" |
构建/发行/移动平台 支持
模块 | 1.x(旧)行为 | 2.x(新)/变更 | 说明 /迁移建议 |
---|---|---|---|
平台支持 | 主要针对桌面:Windows、macOS、Linux | 新增对 iOS/Android 移动平台支持 ([Medium](https://medium.com/%40sevenall/tauri-2-0-released-can-it-beat-electron-this-time-c748663d90ea?utm_source=chatgpt.com "Tauri 2.0 released: Can it beat Electron this time? | by Sevenall Bin")) |
构建字段 | build > distDir , build > devPath |
分别重命名为 frontendDist , devUrl (Tauri) |
更新配置文件 |
多渠道发布 | 较少强调 | 2.x 强调 "多渠道发行"支持:桌面 + 移动 +发布商店 +包管理器等 ([Medium](https://medium.com/%40sevenall/tauri-2-0-released-can-it-beat-electron-this-time-c748663d90ea?utm_source=chatgpt.com "Tauri 2.0 released: Can it beat Electron this time? | by Sevenall Bin")) |
更新器构建产物 | 旧版本可能由打包流程隐式处理 | 在 2.x 中,bundle > createUpdaterArtifacts 配置新增或要求设置;如果从 v1 升级且已有分发产物,建议设置为 "v1Compatible" (Tauri) |
在打包配置中加入该字段以兼容旧版本用户 |
📌 小结
- 升级从 1.x → 2.x 并非"微小改动",在配置结构 、API 路径 、插件系统 、权限模型 、平台支持等多个维度都发生了重大变更。
- 推荐先 使用
tauri migrate
CLI 工具 自动迁移大部分内容(但不应依赖其完全正确,仍需人工校对) (Tauri) - 升级过程中建议按照模块(如上表)逐项检查:配置、Rust 端、前端 JS、插件、权限、安全、构建/打包。
- 若你的项目暂时只针对桌面而且不打算近期上线移动平台,且你已稳定在 1.x 上,也可考虑暂缓升级。但若你启动新项目或想利用 2.x 的新特性(如移动支持、插件化、改进权限模型等),推荐直接从 2.x 开始。