tauri.conf.json 核心配置速查
tauri.conf.json 是 Tauri 应用的总配置文件,窗口外观、应用标识、打包选项、插件开关都集中在这里。它由 Rust 端在编译期读取,改完需要重新编译。本篇按使用频率整理 2.x 版本的常用字段,当作速查表用。
一、文件总体结构
配置文件位于 src-tauri/tauri.conf.json,顶层是一组对象,常用区块如下:
| 区块 | 作用 |
|---|---|
| productName | 应用显示名称,打包后安装界面会用到 |
| version | 版本号,自动更新时作为当前版本依据 |
| identifier | 应用唯一标识,反向域名格式 |
| app | 窗口、安全策略、资源路径等应用级配置 |
| build | 前端构建命令与产物目录 |
| bundle | 打包格式、图标、签名等分发配置 |
| plugins | 各官方插件的配置入口 |
一个最小可用的完整示例:
{
"productName": "我的应用",
"version": "0.1.0",
"identifier": "com.example.myapp",
"build": {
"frontendDist": "../dist",
"devUrl": "http://localhost:1420",
"beforeDevCommand": "npm run dev",
"beforeBuildCommand": "npm run build"
},
"app": {
"windows": [
{
"title": "我的应用",
"width": 900,
"height": 600
}
]
},
"bundle": {
"active": true,
"targets": "all",
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/icon.ico"
]
}
}
frontendDist 指向前端构建产物目录,devUrl 是开发模式下 WebView 加载的地址,两者配合 dev 与 build 两种模式分别生效。
二、窗口配置
app.windows 是数组,每个对象描述一个窗口。常用字段:
| 字段 | 默认值 | 说明 |
|---|---|---|
| title | 应用名 | 窗口标题 |
| width / height | 800 / 600 | 初始尺寸 |
| resizable | true | 是否允许缩放 |
| decorations | true | 是否显示系统标题栏 |
| transparent | false | 窗口背景透明 |
| fullscreen | false | 启动即全屏 |
| center | false | 启动时居中 |
需要动态创建窗口时不必在这里写,运行时用 Rust 的 WebviewWindow API 或 JS API 创建即可,详见「窗口管理:创建、多窗口与装饰」。
三、安全相关字段
| 字段 | 建议值 | 说明 |
|---|---|---|
| app.security.csp | 严格策略 | 内容安全策略字符串 |
| app.security.devCsp | 较宽松 | 仅开发模式生效 |
| app.trayIcon | 按需 | 托盘图标配置 |
CSP 在生产环境建议只允许本地资源与必要的外部域名,配置语法与 Web 的 CSP 一致。Tauri 2.x 的权限控制主要通过 Capability 文件实现,不再依赖此处的开关,这部分内容见「权限模型:Capability 与作用域」。
四、打包配置
bundle 区块决定 tauri build 产出什么:
{
"bundle": {
"active": true,
"targets": ["msi", "nsis"],
"windows": {
"wix": { "language": ["zh-CN"] },
"nsis": { "installerIcon": "icons/icon.ico" }
},
"macOS": {
"minimumSystemVersion": "10.15"
},
"linux": {
"deb": { "depends": ["libwebkit2gtk-4.1-0"] }
}
}
}
targets 可填平台对应格式,all 表示全部。各子区块按平台细粒度控制安装包行为,字段较多,使用时以官方 schema 文档为准。
五、多平台与插件配置备忘
插件自身的配置放在 plugins 区块,键名与插件一一对应。例如更新插件、数据库插件各有一组参数,具体字段见对应插件文档。配置改错时编译期会报 schema 校验错误,按提示修改即可。
建议把这份配置文件纳入版本管理,并在团队里约定修改规范,毕竟它一个人改错,全平台的构建都会受影响。想系统理解配置背后的权限体系,读「权限模型:Capability 与作用域」;想提升改配置的效率,可以用 Claude Code 指南 里的 AI 辅助方式生成 JSON 片段;命令行与脚本批量处理配置时,正则 mastery 的技巧也能派上用场。Rust 端读取配置文件做二次开发时,先翻 Rust 入门 的章节打底。
六、配置管理工程实践
配置一多就容易乱。推荐把配置拆成两份:主题、行为类常量放 tauri.conf.json,它们随版本固化;需要运营或灰度调整的值放远程开关,运行时拉取。两者的边界用下表判断:
| 配置类型 | 放哪里 | 例子 |
|---|---|---|
| 应用标识与版本 | tauri.conf.json | identifier、version |
| 窗口与外观默认值 | tauri.conf.json | 尺寸、标题 |
| 打包与签名参数 | tauri.conf.json | bundle 区块 |
| 可调运营参数 | 远程配置或本地数据文件 | 功能开关、主题皮肤 |
另外强烈建议在 CI 里加一步 JSON schema 校验:脚手架自带 schema 文件,用 ajv 之类工具校验配置合法性,能在构建早期拦下低级错误,比等 Rust 编译半天再报强得多。
最后一点是版本管理纪律:tauri.conf.json 与 Cargo.toml 的 version 字段要保持一致,自动更新与商店上架都依赖它。两处版本号的批量同步脚本可以交给 CI 检查,也可以让 AI 辅助生成对齐脚本,参考 Claude Code 指南 的用法。
配置文件是 Tauri 工程化的基础,值得花一个下午完整读一遍官方 schema。读 schema 的收益不只是少踩坑,很多「不知道还能这样」的功能(语言区域、窗口最小尺寸、自定义协议)都在配置里直接开关。把本篇当作速查表,需要时回来翻对应区块即可,具体字段以官方文档与本地 schema 为准。
配置与权限的关系值得再强调一次:bundle 决定打包形态,Capability 决定运行时能力,两者共同构成应用对外的完整承诺。新人常犯的错是把能力开关当成配置问题去 tauri.conf.json 里找,其实权限在 capabilities 目录里。把配置与权限想成两本账,一本记形态、一本记能力,思路会清晰得多。
顺带一个容易忽略的技巧:配置可以分环境。借助 Tauri 支持的配置合并机制,为开发与生产准备不同差异(如 CSP 严格程度、调试开关),既能生产安全又不妨碍开发便利。字段细节以官方 schema 为准,本篇列的是主线,主线清楚了查细节就快。
配置这章的收尾建议:把官方 schema 的本地链接保存在书签或项目 README 里,它是唯一永远准确的参考。本篇给了地图,地图帮你不迷路,但具体路口的标志还得看 schema。养成「改配置先查 schema」的习惯,能少走弯路。
延伸阅读
- 权限模型:Capability 与作用域——安全相关的另一半配置
- 跨平台构建:Windows、macOS 与 Linux——bundle 配置的实际产物
- Rust 入门:理解配置在 Rust 侧如何被读取
