tauri.conf.json 是 Tauri 应用的“总控制中心”,所有关于窗口行为、安全权限、构建参数、插件配置都在这里集中管理。一个刚刚初始化的项目,这个文件就已经包含了一套可运行的默认值,你只需要按需调整即可。下面拆解它的核心结构,并说明每个部分真正影响什么。
文件整体骨架
一个典型的 Tauri 2.x 配置文件长这样(简化版):
{
"$schema": "https://raw.githubusercontent.com/nicedoc/just-be/main/app_schema.json",
"productName": "my-app",
"version": "0.1.0",
"identifier": "com.example.my-app",
"build": {
"frontendDist": "../dist",
"devUrl": "http://localhost:1420",
"beforeBuildCommand": "npm run build",
"beforeDevCommand": "npm run dev"
},
"app": {
"windows": [
{
"title": "My App",
"width": 800,
"height": 600
}
],
"security": {
"csp": null
}
},
"bundle": {
"active": true,
"targets": "all",
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/128x128@2x.png",
"icons/icon.icns",
"icons/icon.ico"
]
}
}
下面逐一拆解这些顶层字段。
1. 基础身份信息
"productName": "my-app",
"version": "0.1.0",
"identifier": "com.example.my-app"
- productName:最终生成的二进制文件名(如
my-app.exe)和菜单栏显示的名称。 - version:应用版本号,会同步写入各平台安装包的元数据。
- identifier:反向域名格式的唯一标识,用于系统级的应用识别(macOS 的 Bundle Identifier、Windows 的 AppUserModelID、Linux 的 Desktop Entry)。必须反向域名格式,否则打包可能报错。
2. build — 前端构建与开发服务器
"build": {
"frontendDist": "../dist",
"devUrl": "http://localhost:1420",
"beforeBuildCommand": "npm run build",
"beforeDevCommand": "npm run dev"
}
- frontendDist:生产构建时,Tauri 会从这个目录读取前端静态文件。路径相对于
src-tauri目录,通常指向前端框架输出目录(如../dist)。 - devUrl:开发模式下打开的前端地址,一般是你本地的 dev server 地址。Tauri 会直接连接这个 URL,而不是读取本地文件,所以支持热更新。
- beforeBuildCommand / beforeDevCommand:在执行
tauri build或tauri dev之前自动运行的命令。前者通常执行前端生产构建,后者启动开发服务器。如果不指定,Tauri 会跳过,你需要手动处理。
3. app — 应用窗口与安全策略
这是配置的核心部分,所有窗口行为和权限都在这里定义。
3.1 窗口配置 windows
"windows": [
{
"title": "My App",
"width": 800,
"height": 600,
"resizable": true,
"fullscreen": false,
"decorations": true
}
]
windows是一个数组,可以定义多个窗口。- 常用参数:窗口标题、初始尺寸、是否可调整大小、是否启用系统窗口装饰(标题栏和边框)、是否全屏启动。
- 还可以设置最小/最大尺寸、透明背景、置顶、跳过分栏等。这些配置直接映射到操作系统窗口管理器。
3.2 安全策略 security
"security": {
"csp": "default-src 'self'; script-src 'self'"
}
- csp:内容安全策略(Content Security Policy),限制 WebView 能加载哪些资源。未设置时默认为
null(不限制),但强烈建议手动指定。例如只允许加载同源脚本和样式。这可以在前端被攻击时大幅缩小损害范围。 - 其他与安全相关的配置(如
dangerousRemoteDomainIpcAccess)可以在需要时查阅文档按需开启,默认都是最严格的限制。
4. bundle — 打包与分发配置
"bundle": {
"active": true,
"targets": "all",
"icon": ["icons/32x32.png", "icons/128x128.png", ...]
}
- active:是否启用打包功能(通常保持
true)。 - targets:打包格式。可以是数组,如
["msi", "nsis"],也可以写"all"表示生成所有当前平台支持的格式。 - icon:应用图标文件列表,不同平台需要不同尺寸或格式。Tauri 会根据这些源文件自动生成各平台需要的图标格式。
- 其他常见配置:Windows 安装包(
windows.wix或nsis)、macOS 签名(macOS)、Linux 分类定义等。这些会在具体平台章节深入。
5. 插件系统(可选)
Tauri 2.x 的插件通过 plugins 字段集中管理,例如:
"plugins": {
"shell": {
"open": true
},
"fs": {
"scope": ["$APPDATA/*"]
}
}
每个插件会有自己的命名空间和配置规则,用来声明权限和行为。这是 Tauri 2.x 与 1.x 最大的变化之一:权限更加细粒度,且直接写在配置文件里。
实用小技巧
- 快速定位问题:打包或启动报错时,先检查
identifier格式、前端构建路径是否正确。 - 窗口尺寸调试:开发阶段可以先设置为较小的初始尺寸,然后通过拖拽调整,确认体验后再写回配置文件。
- 安全 CSP 配置:如果不确定 CSP 怎么写,可以先用 Chrome DevTools 在浏览器里测试
Content-Security-Policy响应头,确认策略正确后移入配置。 - 环境变量:
beforeBuildCommand等字段支持跨平台命令,可以利用系统环境变量(如npm run build -- --mode production)。
配置文件结构清晰、层级分明,掌握这些基础配置后,就可以开始构建满足需求的桌面应用了。后续更多高级配置(如深度集成系统菜单、多窗口通信等)都可以在此基础上逐步添加。