1. 应用基础信息
这部分定义了应用的全局标识、名称、版本等,直接影响生成的二进制文件名、安装包属性和系统内显示的标识。
{
"productName": "我的工具",
"version": "1.0.0",
"identifier": "com.mycompany.mytool",
"build": {
"beforeBuildCommand": "npm run build",
"beforeDevCommand": "npm run dev",
"devUrl": "http://localhost:1420",
"frontendDist": "../dist"
}
}
- productName:最终
.exe或.app的名称,系统托盘、安装程序标题都会用到。 - version:必须符合语义化版本,Tauri 会用它生成安装包版本号。
- identifier:反向域名的唯一标识,macOS 和 Linux 系尤其需要,避免与其它应用冲突。
- build 区域:告诉 Tauri 如何启动前端开发服务器(
devUrl)以及打包时前端构建产物的位置(frontendDist)。beforeDevCommand和beforeBuildCommand分别在开发/构建前自动执行,通常就是npm run dev和npm run build。
实际要注意:identifier 一旦设定尽量不要改名,否则可能导致旧配置残留;frontendDist 的路径是相对于 src-tauri 目录的,填错会造成打包后白屏。
2. 窗口配置
窗口配置决定了应用启动时的外观、大小、行为,直接关系到用户体验。
"app": {
"windows": [
{
"title": "我的工具",
"width": 800,
"height": 600,
"resizable": true,
"fullscreen": false,
"decorations": true,
"center": true,
"minWidth": 400,
"minHeight": 300
}
]
}
- title:窗口标题栏显示的文字,支持动态更新(通过 Rust 端 API)。
- width / height:初始尺寸(单位像素)。
- resizable:是否允许用户拖拽边框调整大小。
- decorations:是否显示系统原生的窗口装饰(标题栏、关闭按钮等)。设为
false可实现无边框窗口,常用于自定义标题栏。 - center:启动时是否自动居中屏幕。
- minWidth / minHeight:窗口最小尺寸,防止页面内容被过度压缩。
实用建议:如果你需要 Kiosk 模式或自定义窗口控件,可以设置 decorations: false 并用前端模拟标题栏,但要自行处理拖拽、最小化和关闭。
3. 安全配置
安全是 Tauri 架构的核心优势之一。安全配置通过权限白名单的方式,严格限制前端 JavaScript 能调用的后端接口。
"app": {
"security": {
"csp": "default-src 'self'; img-src 'self' asset: https://asset.localhost; script-src 'self'",
"dangerousDisableAssetCspModification": false
}
}
另外,权限控制主要在 tauri.conf.json 的 plugins 和旧版 allowlist 中(Tauri v2 推荐使用 capabilities 文件),但基础安全选项仍在此处:
- csp(内容安全策略):定义前端能够加载资源的来源,防御 XSS 和数据注入。示例中只允许加载同源脚本、图片等,可根据需要放宽。Tauri 默认会注入一个严格的 CSP,你可以覆盖,但务必谨慎。
- dangerousDisableAssetCspModification:设为
true会禁用 Tauri 在开发时对 asset 协议的 CSP 注入。一般用不到,保持默认false即可。
权限白名单(Tauri v1 风格简述)
传统的 Tauri v1 有 tauri.allowlist 字段,例如:
"tauri": {
"allowlist": {
"fs": {
"readFile": true,
"writeFile": true,
"scope": ["$APPDATA/*", "$DOCUMENT/*"]
},
"shell": {
"open": true
},
"clipboard": {
"writeText": true,
"readText": true
}
}
}
在 Tauri v2 中,这些能力通过插件系统的 capabilities 进行更细粒度的管理,但设计理念一致:默认全部禁用,需要什么就显式开启什么。只有被明确允许的命令,前端才能通过 invoke 调用。
安全底线:永远不要为了方便而把所有 API 全盘开启。即使发生前端代码被篡改,攻击者也受限于你配置的权限范围,无法任意访问系统。
总结
这三个配置区域互相协作:基础信息确保应用有一个合法的身份,窗口配置提供了第一眼的使用体验,安全配置则构成了一道防波堤。在项目开始时就做好这些设定,后续才能平稳开发、安全上线。