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 侧如何被读取