当前位置: 首页 > news >正文

Tauri v1 与 v2 配置对比

本文档对比 Tauri v1 和 v2 版本的配置结构和内容差异,帮助开发者了解版本变更并进行迁移。

配置结构变化

v1 配置结构

{"package": { ... },"tauri": { "allowlist": { ... },"bundle": { ... },"security": { ... },"updater": { ... },"windows": [ ... ]},"build": { ... },"plugins": { ... }
}

v2 配置结构

{"identifier": "...","productName": "...", "version": "...","app": {"security": { ... },"windows": [ ... ]},"build": { ... },"bundle": { ... }, "plugins": { ... }
}

主要变化

根级配置

v1v2说明
package.productNameproductName移至根级
package.versionversion移至根级
-identifier新增,必填项,应用唯一标识符
-mainBinaryName新增,可选,主二进制文件名

根级配置示例

v1 配置:

{"package": {"productName": "我的Tauri应用","version": "0.1.0"},"tauri": { ... }
}

v2 配置:

{"identifier": "com.example.myapp","productName": "我的Tauri应用","version": "0.1.0","app": { ... }
}

核心配置项

v1v2说明
tauriapp重命名
tauri.allowlistapp.security.capabilities权限系统重构
tauri.bundlebundle移至根级
tauri.securityapp.security移动位置
tauri.updaterbundle.createUpdaterArtifacts简化为布尔值
tauri.windowsapp.windows移动位置

开发构建配置

v1v2说明
build.devPathbuild.devUrl重命名
build.distDirbuild.frontendDist重命名
build.withGlobalTauriapp.withGlobalTauri移至app配置
-build.removeUnusedCommands新增

构建配置示例

v1 配置:

{"build": {"devPath": "http://localhost:3000","distDir": "../dist","withGlobalTauri": true}
}

v2 配置:

{"build": {"devUrl": "http://localhost:3000","frontendDist": "../dist","removeUnusedCommands": true},"app": {"withGlobalTauri": true}
}

安全配置

v1v2说明
tauri.security.cspapp.security.csp位置变更
tauri.security.freezePrototypeapp.security.freezePrototype位置变更
tauri.security.dangerousDisableAssetCspModificationapp.security.dangerousDisableAssetCspModification位置变更
tauri.security.dangerousRemoteDomainIpcAccess-已移除
tauri.security.dangerousUseHttpScheme-已移除
-app.security.pattern新增安全模式配置
-app.security.assetProtocol新增资源协议安全配置

安全配置示例

v1 配置:

{"tauri": {"security": {"csp": "default-src 'self'","freezePrototype": true,"dangerousDisableAssetCspModification": false}}
}

v2 配置:

{"app": {"security": {"csp": "default-src 'self'","freezePrototype": true,"dangerousDisableAssetCspModification": false,"pattern": {"use": "brownfield"},"assetProtocol": {"enable": true,"scope": ["**/*.html", "**/*.js", "**/*.css", "**/*.png"]}}}
}

权限系统(Capabilities)

v2 引入了全新的权限系统,替代了 v1 的 allowlist。新系统更灵活、更安全,使用 capabilities 配置。

v1 权限配置 (allowlist):

{"tauri": {"allowlist": {"fs": {"all": true,"readFile": true,"writeFile": true,"scope": ["$APPDATA/**", "$APPCONFIG/**"]},"dialog": {"all": true},"shell": {"execute": true,"scope": [{ "name": "node", "cmd": "node", "args": true }]}}}
}

v2 权限配置 (capabilities):

{"app": {"security": {"capabilities": [{"identifier": "fs:default","allow": [{ "path": "$APPDATA/**" },{ "path": "$APPCONFIG/**" }]},{"identifier": "dialog:default"},{"identifier": "shell:allow-execute","permissions": ["allow-execute-command"],"commands": [{ "name": "node", "args": true }]}]}}
}

打包配置

v1v2说明
tauri.bundle.activebundle.active位置变更
tauri.bundle.targetsbundle.targets位置变更
tauri.bundle.iconbundle.icon位置变更
-bundle.createUpdaterArtifacts新增,替代v1的updater配置
-bundle.useLocalToolsDir新增

平台特定配置

v1v2说明
tauri.bundle.windowsbundle.windows位置变更
tauri.bundle.macOSbundle.macOS位置变更
tauri.bundle.linuxbundle.linux位置变更
-bundle.android新增,支持Android平台
-bundle.iOS新增,支持iOS平台

移动平台配置

v2新增了对移动平台的支持,下面是移动平台特有的配置示例:

Android 配置:

{"bundle": {"android": {"versionCode": 1,"minSdkVersion": 24,"targetSdkVersion": 33,"icon": "icons/android-icon.png","packageName": "com.example.myapp","useCustomStatusBarColor": true,"statusBarColor": "#FFFFFF","keystore": {"path": "keystore.jks","keyAlias": "key0","password": "${ENV_PASSWORD}"}}}
}

iOS 配置:

{"bundle": {"iOS": {"developmentTeam": "ABCDE12345","minimumOsVersion": "13.0","deviceFamily": ["iphone", "ipad"],"infoPlist": {"NSCameraUsageDescription": "此应用需要访问您的相机","NSPhotoLibraryUsageDescription": "此应用需要访问您的照片库","CFBundleURLTypes": [{"CFBundleURLName": "com.example.myapp","CFBundleURLSchemes": ["myapp"]}]}}}
}

窗口配置

v1和v2的窗口配置选项基本相同,但在v2中有以下新增属性:

新增属性说明
shadow窗口是否有阴影
theme窗口主题(light/dark)
incognito是否使用隐身模式
fileDropEnabled是否允许文件拖放
label窗口标签,用于API引用

窗口配置示例

v1 配置:

{"tauri": {"windows": [{"title": "我的应用","width": 800,"height": 600,"resizable": true,"fullscreen": false}]}
}

v2 配置:

{"app": {"windows": [{"title": "我的应用","width": 800,"height": 600,"resizable": true,"fullscreen": false,"shadow": true,"theme": "light","incognito": false,"fileDropEnabled": true,"label": "main"}]}
}

插件系统变更

Tauri v2 的插件系统相比 v1 有重大更新,支持更灵活的插件配置:

v1 插件配置:

{"plugins": {"fs": {"scope": ["$APPDATA/**"]},"sql": {}}
}

v2 插件配置:

{"plugins": {"local-fs": {"scope": ["$APPDATA/**"]},"sql": {"allowedPaths": ["$APPDATA/database.sqlite"]}}
}

文件格式与平台特定配置

文件格式

两个版本都支持:

  • JSON: tauri.conf.json(默认)
  • JSON5: tauri.conf.jsontauri.conf.json5
  • TOML: Tauri.toml

平台特定配置

v1v2说明
tauri.linux.conf.jsontauri.linux.conf.json无变化
tauri.windows.conf.jsontauri.windows.conf.json无变化
tauri.macos.conf.jsontauri.macos.conf.json无变化
-tauri.android.conf.json新增,Android平台配置
-tauri.ios.conf.json新增,iOS平台配置

迁移指南

从 Tauri v1 迁移到 v2 时,建议按照以下步骤操作:

  1. 必填字段添加

    • 添加必需的identifier字段,使用反向域名表示法(如com.company.app
  2. 基本结构调整

    • package配置移至根级
    • tauri更改为app
    • bundle移至根级
  3. 构建配置更新

    • devPath更新为devUrl
    • distDir更新为frontendDist
    • withGlobalTauri移至app配置
  4. 权限系统迁移

    • allowlist迁移到新的capabilities权限系统
    • 对每个权限定义identifier和具体的权限范围
  5. 安全配置更新

    • 将所有安全相关配置移至app.security
    • 添加新的patternassetProtocol配置
  6. 窗口配置更新

    • 调整窗口配置路径为app.windows
    • 考虑使用新增的窗口属性增强功能
  7. 更新器配置

    • 将复杂的updater配置替换为简单的bundle.createUpdaterArtifacts布尔值
  8. 移动平台支持(如需):

    • 添加bundle.androidbundle.iOS配置

迁移示例

以下是一个完整的迁移示例,展示从 v1 到 v2 的具体配置变化:

v1 配置文件:

{"package": {"productName": "我的Tauri应用","version": "0.1.0"},"tauri": {"allowlist": {"fs": {"all": true,"scope": ["$APPDATA/**"]},"dialog": {"all": true}},"bundle": {"active": true,"icon": "icons/icon.png","targets": ["deb", "msi", "dmg"]},"security": {"csp": "default-src 'self'"},"updater": {"active": true,"endpoints": ["https://example.com/update-feed.json"]},"windows": [{"title": "我的应用","width": 800,"height": 600}]},"build": {"devPath": "http://localhost:3000","distDir": "../dist"}
}

v2 配置文件:

{"identifier": "com.example.myapp","productName": "我的Tauri应用","version": "0.1.0","app": {"security": {"csp": "default-src 'self'","capabilities": [{"identifier": "fs:default","allow": [{ "path": "$APPDATA/**" }]},{"identifier": "dialog:default"}]},"windows": [{"title": "我的应用","width": 800,"height": 600,"label": "main"}]},"build": {"devUrl": "http://localhost:3000","frontendDist": "../dist"},"bundle": {"active": true,"icon": "icons/icon.png","targets": ["deb", "msi", "dmg"],"createUpdaterArtifacts": true}
}

参考资料

  • Tauri v1配置文档
  • Tauri v2配置文档
  • Tauri v1配置Schema
  • Tauri v2配置Schema

相关文章:

  • C++好用的打印日志类
  • Cangjie Magic在医疗领域的应用:智能体技术如何重塑医疗数字化
  • 科研 | 光子技术为人工智能注入新动力
  • Fiori学习专题二十五:Remote OData Service
  • 数据库设计理论:从需求分析到实现的全流程解析
  • 详解具身智能机器人开源数据集:RoboMIND
  • 潇洒郎: 100% 成功搭建Docker私有镜像仓库并管理、删除镜像
  • 偏移成像中,原始地震采集数据的数据规则化(Data Regularization)
  • Java进阶--设计模式
  • 【LeetCode Hot100】二叉树篇
  • MySQL 中 redo log、undo log 以及 bin log 的区别
  • 安全企业内部im,BeeWorks即时通讯
  • 智能 + 安全:婴幼儿托育管理实训基地标准化建设方案
  • 傅里叶与相位偏移
  • 【Java函数式编程-58.1】深入理解Java中的Consumer函数式接口
  • 基于Spring Boot + Vue 项目中引入deepseek方法
  • 基于RFID与云边端协同的智慧牧场解决方案架构设计
  • 信号完整性简介第二篇
  • 大语言模型(LLM)应用开发平台Dify详细使用
  • 实用Chrome插件备忘
  • 年轻人能为“老有意思”做点什么
  • 城市更新·简报│中央财政支持城市更新,倾斜超大特大城市
  • 演员刘美含二手集市被曝售假,本人道歉
  • 西班牙葡萄牙突发全国大停电,欧洲近年来最严重停电事故何以酿成
  • 新剧|反谍大剧《绝密较量》央一开播,张鲁一高圆圆主演
  • 国家发改委:我国能源进口来源多元,企业减少甚至停止自美能源进口对国内能源供应没有影响