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

Tauri v2 配置全解析(完整版)

配置文件基础

Tauri 支持以下配置文件格式:

  • JSON格式:就是默认的tauri.conf.json
  • JSON5格式:可以是tauri.conf.jsontauri.conf.json5(不过得先启用config-json5这个Cargo特性)
  • TOML格式:文件名是Tauri.toml(同样需要启用config-toml特性)

你还可以为不同平台创建单独的配置文件,比如tauri.windows.conf.jsontauri.macos.conf.jsontauri.linux.conf.jsontauri.android.conf.jsontauri.ios.conf.json,这些会和主配置文件合并起来用。

基础配置项

根级配置

配置项必填?说明
identifier必填你app的唯一标识,写成反向域名形式,如com.tauri.example。只能用字母、数字、连字符和点
productName选填app的显示名称,会出现在菜单栏和标题栏上
version选填app版本号,可以直接写语义化版本号,也可以指向package.json文件路径。不写的话就用Cargo.toml里的版本
mainBinaryName选填主程序文件名。默认就是你Cargo项目名称

app配置

app这部分包含了app的主要设置:

"app": {"security": { ... },"windows": [ ... ],"withGlobalTauri": false,"enableGTKAppId": false,"macOSPrivateApi": false
}

app.windows配置

这里定义app窗口的各种属性,是个数组,每个窗口可以有这些设置:

配置项默认值说明
width800窗口宽度,单位是像素
height600窗口高度,单位是像素
xnull窗口在屏幕上的X坐标
ynull窗口在屏幕上的Y坐标
centerfalse是否让窗口居中显示
resizabletrue能不能调整窗口大小
title“Tauri App”窗口标题文字
fullscreenfalse是否全屏显示
focustrue窗口创建时是否获得焦点
maximizedfalse窗口是否默认最大化
visibletrue窗口是否可见
decorationstrue是否显示窗口边框和控制按钮
alwaysOnTopfalse窗口是否总是显示在最上层
skipTaskbarfalse是否在任务栏隐藏图标
transparentfalse窗口是否透明
shadowtrue窗口是否有阴影效果
themenull窗口主题,可选"light"或"dark"
minWidthnull窗口最小宽度
minHeightnull窗口最小高度
maxWidthnull窗口最大宽度
maxHeightnull窗口最大高度
closabletrue窗口是否可以被关闭
fileDropEnabledtrue是否允许拖放文件到窗口
acceptFirstMousefalse在macOS上是否接受首次鼠标点击
tabbingIdentifiernullmacOS上的标签标识符
titleBarStyle“Visible”标题栏样式,可选"Visible"、“Transparent"或"Overlay”
hiddenTitlefalse在macOS上是否隐藏标题
url“index.html”窗口加载的URL或本地文件路径
userAgentnull自定义用户代理字符串
incognitofalse是否使用隐身模式
additionalBrowserArgsnull传给浏览器的额外参数
labelnull窗口标签,用于通过API找到特定窗口
contentProtectedfalse是否保护窗口内容不被截图或录屏
cursornull默认的鼠标指针样式
startupArguments[]传递给窗口的启动参数
windowEffectsnull窗口视觉效果设置,如毛玻璃效果
serviceWorkerScriptnull自定义Service Worker脚本路径
maximizabletrue窗口是否可以最大化
minimizabletrue窗口是否可以最小化
webviewAttributes{}WebView的额外属性设置
parentnull父窗口的标签,用于创建子窗口
windowEffectsStatenull窗口效果的默认状态
ownernull窗口的所有者标签

app.security配置

这里定义app的安全相关设置:

"security": {"csp": null,"freezePrototype": false,"dangerousDisableAssetCspModification": false,"pattern": {"use": "brownfield"},"assetProtocol": {"enable": false,"scope": []},"capabilities": []
}
配置项默认值说明
cspnull内容安全策略,控制页面可以加载哪些资源
freezePrototypefalse是否冻结JS原型链防止原型污染
dangerousDisableAssetCspModificationfalse是否禁用Tauri对CSP的自动修改(小心用)
pattern.use“brownfield”安全模式,“brownfield”(默认)或"isolation"
pattern.optionsnull安全模式的其他选项
assetProtocol.enablefalse是否启用资源协议
assetProtocol.scope[]资源协议的作用范围
capabilities[]app的权限设置,如文件访问、网络请求等
Capabilities(权限)详解

权限控制app能做什么,这是v2版本新增的重要功能:

"capabilities": [{"name": "path","path": {"allow": ["$DOWNLOAD/*", "$PICTURE/*"],"deny": [],"requireLiteralLeadingDot": false}},{"name": "window"},{"name": "app"}
]

常用的权限包括:

  • path:文件系统访问权限
  • window:窗口操作权限
  • app:应用操作权限
  • shell:执行外部命令权限
  • http:HTTP请求权限
  • notification:通知权限
  • clipboard:剪贴板访问权限
  • dialog:对话框权限
  • os:操作系统信息权限

其他app配置项

配置项默认值说明
withGlobalTaurifalse是否在全局作用域暴露Tauri API
enableGTKAppIdfalse是否启用GTK应用ID
macOSPrivateApifalse是否启用macOS私有API
trayIconnull系统托盘图标设置

build配置

这里定义app的构建相关设置:

"build": {"beforeDevCommand": "","beforeBuildCommand": "","devUrl": "http://localhost:3000","frontendDist": "../dist","devServerPort": null,"removeUnusedCommands": false
}
配置项默认值说明
beforeDevCommand“”开发模式前执行的命令,比如启动前端开发服务器
beforeBuildCommand“”构建前执行的命令,比如构建前端代码
devUrl“http://localhost:3000”开发服务器的URL
frontendDist“…/dist”前端构建后文件所在目录
devServerPortnull开发服务器端口,null表示自动选择
devPathnull开发时前端静态文件目录(优先级高于devUrl)
removeUnusedCommandsfalse是否删除未使用的命令

bundle配置

这里定义app的打包设置:

"bundle": {"active": false,"targets": "all","icon": [],"resources": [],"copyright": "","category": null,"shortDescription": "","longDescription": "","createUpdaterArtifacts": false,"useLocalToolsDir": false,"publisher": null,"windows": { ... },"macOS": { ... },"linux": { ... },"android": { ... },"iOS": { ... }
}
配置项默认值说明
activefalse是否启用打包功能
targets“all”打包的目标平台,可以是"all"或特定平台数组
icon[]app图标文件路径数组
resources[]需要包含的额外资源文件路径
copyright“”版权信息
categorynull应用类别
shortDescription“”应用简短描述
longDescription“”应用详细描述
createUpdaterArtifactsfalse是否创建自动更新所需文件
useLocalToolsDirfalse是否使用本地工具目录
publishernull发布者信息
externalBin[]要包含的外部二进制文件
appimage{}AppImage特定配置
deb{}DEB特定配置
rpm{}RPM特定配置

bundle.windows配置

Windows平台的打包设置:

"windows": {"allowDowngrades": true,"certificateThumbprint": null,"digestAlgorithm": null,"signCommand": null,"timestampUrl": null,"tsp": false,"webviewInstallMode": {"silent": true,"type": "downloadBootstrapper"},"wix": null,"nsis": null,"installer": null,"installerArgs": [],"installerIcon": null,"languages": [],"skipWebviewInstall": false,"signingArguments": [],"shortcutName": null,"signAndInstall": false,"providers": {}
}
配置项默认值说明
allowDowngradestrue是否允许安装低版本覆盖高版本
certificateThumbprintnull签名证书指纹
digestAlgorithmnull摘要算法
signCommandnull签名命令
timestampUrlnull时间戳服务器URL
tspfalse是否使用TSP时间戳
webviewInstallMode.type“downloadBootstrapper”WebView2安装方式,可选"downloadBootstrapper"、“offlineInstaller"或"fixedRuntime”
webviewInstallMode.silenttrue是否静默安装WebView2
wixnullWiX安装程序设置
nsisnullNSIS安装程序设置
installernull自定义安装程序路径
installerArgs[]安装程序参数
installerIconnull安装程序图标
languages[]安装程序支持的语言
skipWebviewInstallfalse是否跳过WebView2安装
signingArguments[]签名额外参数
shortcutNamenull快捷方式名称
signAndInstallfalse签名后是否立即安装
providers{}文件类型关联提供程序
bundle.windows.wix配置

WiX安装程序的详细设置:

"wix": {"language": ["en-US"],"template": null,"fragmentPaths": [],"componentRefs": [],"disableWixPdbOutput": false,"license": null,"bannerPath": null,"dialogImagePath": null
}
配置项说明
language安装程序语言
template自定义WiX模板文件路径
fragmentPathsWiX片段文件路径
componentRefs组件引用列表
disableWixPdbOutput是否禁用PDB输出
license许可证文件路径
bannerPath安装程序横幅图片路径
dialogImagePath对话框图片路径
bundle.windows.nsis配置

NSIS安装程序的详细设置:

"nsis": {"installerIcon": null,"headerImage": null,"sidebarImage": null,"installMode": "currentUser","license": null,"languages": [],"installDir": null,"template": null,"displayLanguageSelector": false,"scriptTemplate": null
}
配置项说明
installerIcon安装程序图标
headerImage顶部图片
sidebarImage侧边栏图片
installMode安装模式,“currentUser"或"perMachine”
license许可证文件路径
languages支持的语言列表
installDir安装目录
template自定义模板
displayLanguageSelector是否显示语言选择器
scriptTemplate自定义脚本模板

bundle.macOS配置

macOS平台的打包设置:

"macOS": {"frameworks": null,"files": {},"bundleVersion": null,"minimumSystemVersion": "10.13","exceptionDomain": null,"signingIdentity": null,"hardenedRuntime": true,"providerShortName": null,"entitlements": null,"licenseFile": null,"appCategory": null,"license": null,"appAttr": {},"signingFlags": [],"notarizeTeamId": null,"dmg": { ... }
}
配置项默认值说明
frameworksnull需要打包的macOS框架列表
files{}要包含在app中的额外文件
bundleVersionnull构建版本号,对应CFBundleVersion
minimumSystemVersion“10.13”支持的最低macOS版本
exceptionDomainnullapp通信域名
signingIdentitynull代码签名身份
hardenedRuntimetrue是否启用强化运行时保护
providerShortNamenull公证提供商简称
entitlementsnull权限配置文件路径
licenseFilenull许可证文件路径
appCategorynull应用类别,如"public.app-category.developer-tools"
licensenull许可证文本
appAttr{}应用属性
signingFlags[]签名额外参数
notarizeTeamIdnull公证团队ID
bundle.macOS.dmg配置

DMG镜像的特定设置:

"dmg": {"background": null,"windowPosition": null,"windowSize": {"width": 660,"height": 400},"appPosition": {"x": 180,"y": 170},"applicationFolderPosition": {"x": 480,"y": 170},"formats": ["ULFO"],"compressionLevel": null,"compressionMethod": null,"signing": null
}
配置项默认值说明
backgroundnullDMG背景图片路径
windowPositionnullDMG安装窗口位置
windowSize.width660DMG窗口宽度
windowSize.height400DMG窗口高度
appPosition.x180应用图标X坐标
appPosition.y170应用图标Y坐标
applicationFolderPosition.x480应用程序文件夹X坐标
applicationFolderPosition.y170应用程序文件夹Y坐标
formats[“ULFO”]DMG格式
compressionLevelnull压缩级别
compressionMethodnull压缩方法
signingnull签名设置

bundle.linux配置

Linux平台的打包设置:

"linux": {"appimage": {"bundleMediaFramework": false,"files": {}},"deb": {"files": {},"depends": [],"section": null,"priority": "optional","desktopTemplate": null,"scripts": {"postinst": null,"preinst": null,"postrm": null,"prerm": null}},"rpm": {"epoch": 0,"release": "1","files": {},"depends": [],"scripts": {"pretrans": null,"posttrans": null,"preinstall": null,"postinstall": null,"preremove": null,"postremove": null}},"flatpak": {"runtime": "org.freedesktop.Platform","runtimeVersion": "23.08","sdk": "org.freedesktop.Sdk","base": null,"baseVersion": null,"metainfo": null,"finishArgs": []}
}
配置项默认值说明
appimage.bundleMediaFrameworkfalse是否打包媒体框架
appimage.files{}AppImage包含的额外文件
deb.files{}DEB包含的额外文件
deb.depends[]DEB依赖包
deb.sectionnull软件包分类
deb.priority“optional”软件包优先级
deb.desktopTemplatenull自定义桌面模板
deb.scripts.*nullDEB安装脚本
rpm.epoch0RPM的epoch值
rpm.release“1”RPM的release值
rpm.files{}RPM包含的额外文件
rpm.depends[]RPM依赖包
rpm.scripts.*nullRPM安装脚本
flatpak.*-Flatpak包设置

bundle.android配置

Android平台的打包设置:

"android": {"minSdkVersion": 24,"versionCode": null,"icon": null,"appPermissions": null,"signingConfig": {"storeFile": null,"storePassword": null,"keyAlias": null,"keyPassword": null},"useDebug": null,"androidManifestPath": null
}
配置项默认值说明
minSdkVersion24最低支持的Android SDK版本
versionCodenull应用版本代码,必须小于21亿
iconnull应用图标
appPermissionsnull应用权限列表
signingConfig.storeFilenull密钥库文件路径
signingConfig.storePasswordnull密钥库密码
signingConfig.keyAliasnull密钥别名
signingConfig.keyPasswordnull密钥密码
useDebugnull是否使用调试模式
androidManifestPathnull自定义AndroidManifest.xml路径

bundle.iOS配置

iOS平台的打包设置:

"iOS": {"template": null,"frameworks": null,"developmentTeam": null,"bundleVersion": null,"minimumSystemVersion": "13.0","appPermissions": null,"infoPlist": null,"xcodeProjPath": null,"iCloudContainerEnvironment": null,"codesigningIdentity": null,"provisioningProfile": null
}
配置项默认值说明
templatenull自定义XcodeGen模板路径
frameworksnull需要打包的iOS框架列表
developmentTeamnull开发团队ID(这个必须填)
bundleVersionnull构建版本号,对应CFBundleVersion
minimumSystemVersion“13.0”支持的最低iOS版本
appPermissionsnull应用权限列表
infoPlistnull自定义Info.plist设置
xcodeProjPathnull自定义Xcode项目路径
iCloudContainerEnvironmentnulliCloud容器环境设置
codesigningIdentitynull代码签名身份
provisioningProfilenull预配置文件

plugins配置

插件配置,可以为不同插件设置不同参数:

"plugins": {"shell": {"open": true,"scope": [{"name": "open-browser","cmd": "open","args": true}]},"http": {"all": true,"request": true,"scope": ["https://api.github.com/*"]}
}

常见插件配置项:

  1. shell插件:控制命令行执行权限

    • open:是否允许打开外部程序
    • scope:允许执行的命令范围
  2. http插件:控制网络请求权限

    • all:是否允许所有请求
    • request:是否允许发送请求
    • scope:允许的URL范围
  3. fs插件:控制文件系统访问

    • scope:允许访问的路径
    • allow:允许的操作类型
  4. dialog插件:控制文件选择对话框

    • open:是否允许打开文件对话框
    • save:是否允许保存文件对话框

实用技巧

  1. 开发环境设置

    • build.devUrl指向前端开发服务器
    • build.beforeDevCommand自动启动前端服务器,如"npm run dev"
    • 开发时可以用tauri dev命令启动应用
  2. 打包部署设置

    • build.frontendDist指向前端构建好的文件夹
    • build.beforeBuildCommand自动构建前端代码,如"npm run build"
    • 配置bundle.targets选择要打包的平台
    • 打包时用tauri build命令
  3. 安全设置

    • 配置app.security.csp设置内容安全策略
    • app.security.capabilities控制app权限,最小权限原则
    • 使用security.freezePrototype防止原型污染
  4. 多窗口app

    • app.windows数组中定义多个窗口
    • label给每个窗口设置唯一标识
    • 可以设置窗口之间的父子关系
  5. 自动更新设置

    • bundle.createUpdaterArtifacts设为true启用自动更新
    • 确保版本号格式正确,遵循语义化版本规则
    • 需要配合适当的更新服务器
  6. 跨平台适配

    • 使用平台特定配置文件微调不同平台行为
    • 图标准备多种大小和格式,适配不同平台
    • 考虑不同操作系统的权限模型
  7. 性能优化

    • 使用window.contentProtected减少不必要的截图能力
    • 合理设置window.transparent和特效,避免性能损耗
    • 使用window.shadow可以提高视觉效果但会影响性能

示例配置

最小配置

{"identifier": "com.example.myapp","build": {"devUrl": "http://localhost:3000","frontendDist": "../dist"},"app": {"security": {"csp": "default-src 'self'"},"windows": [{"width": 800,"height": 600,"title": "我的Tauri应用"}]}
}

生产环境配置

{"identifier": "com.example.myapp","productName": "我的应用","version": "1.0.0","build": {"beforeBuildCommand": "npm run build","frontendDist": "../dist"},"app": {"security": {"csp": "default-src 'self'; connect-src 'self' https://api.example.com","capabilities": [{"name": "window"},{"name": "path","path": {"allow": ["$DOWNLOAD/*"]}},{"name": "http","http": {"scope": ["https://api.example.com/*"]}}]},"windows": [{"width": 900,"height": 700,"title": "我的应用","center": true,"resizable": true}]},"bundle": {"active": true,"icon": ["icons/32x32.png", "icons/128x128.png", "icons/128x128@2x.png"],"targets": ["deb", "appimage", "msi", "app", "dmg"],"publisher": "若愚679","copyright": "© 2025 若愚","shortDescription": "一个很棒的Tauri应用","longDescription": "这是一个使用Tauri和Web技术构建的跨平台应用"}
}

参考链接

  • Tauri官方配置文档
  • Tauri配置JSON Schema
http://www.xdnf.cn/news/2351.html

相关文章:

  • Eigen线性代数求解器(分解类)
  • 内存大冒险
  • ai与望闻问切
  • 2025最新Facefusion3.1.2使用Docker部署,保姆级教程,无需配置环境
  • C语言输入输出完全指南:从基础到文件操作
  • MCP 协议解读:STDIO 高效通信与 JSON-RPC 实战
  • Java大师成长计划之第4天:Java中的泛型
  • Android Gradle插件开发
  • AI Agent: MCP和AI Agent的联系
  • 线程池(二):深入剖析synchronized关键字的底层原理
  • 1位的推理框架bitnet.cpp
  • MySQL之视图
  • DIFY 浅尝 - Dify + Ollama 抓取BBC新闻
  • babel核心知识点
  • ARM架构的微控制器总线矩阵
  • 【Java面试笔记:进阶】21.Java并发类库提供的线程池有哪几种? 分别有什么特点?
  • Java 实现目录递归拷贝
  • Agent2Agent
  • MyBatis 插件开发的完整详细例子
  • Python 实现将图像发送到指定的 API 进行推理
  • docker配置mysql遇到的问题:网络连接超时、启动mysql失败、navicat无法远程连接mysql
  • 跨端时代的全栈新范式:React Server Components深度集成指南
  • 智能赋能与精准评估:大语言模型在自动作文评分中的效度验证及改进路径
  • JS toFixed的坑以及四舍五入实现方法
  • 可靠传输的守护者:揭开计算机网络传输层的奥秘
  • 【C++】14.容器适配器 | stack | queue | 仿函数 | priority_queue
  • 迷宫问题演示
  • Kafka + Kafka-UI
  • Python dotenv 使用指南:轻松管理项目环境变量
  • 【SSH 端口转发】通过SSH端口转发实现访问远程服务器的 tensorboard