跳到内容
Tauri

配置文件

由于 Tauri 是一个用于构建应用程序的工具包,因此可能有很多文件需要配置项目设置。您可能会遇到的一些常见文件是 tauri.conf.jsonpackage.jsonCargo.toml。本页将简要解释每个文件,以帮助您了解应该修改哪些文件。

Tauri 配置用于定义 Web 应用程序的源、描述应用程序的元数据、配置捆绑包、设置插件配置、通过配置窗口、托盘图标、菜单等修改运行时行为。

此文件由 Tauri 运行时和 Tauri CLI 使用。您可以定义构建设置(例如在 tauri build 之前运行的命令tauri dev 启动之前运行的命令),设置 应用程序的名称版本控制 Tauri 运行时,以及 配置插件

默认的 Tauri 配置格式是 JSON。通过在 Cargo.toml 中的 tauritauri-build 依赖项中添加 config-json5config-toml 功能标志(分别),可以启用 JSON5 或 TOML 格式。

Cargo.toml
[build-dependencies]
tauri-build = { version = "2.0.0", features = [ "config-json5" ] }
[dependencies]
tauri = { version = "2.0.0", features = [ "config-json5" ] }

所有格式的结构和值都相同,但是,格式应与相应文件的格式保持一致

tauri.conf.json
{
build: {
devUrl: 'https://:3000',
// start the dev server
beforeDevCommand: 'npm run dev',
},
bundle: {
active: true,
icon: ['icons/app.png'],
},
app: {
windows: [
{
title: 'MyApp',
},
],
},
plugins: {
updater: {
pubkey: 'updater pub key',
endpoints: ['https://my.app.updater/{{target}}/{{current_version}}'],
},
},
}
Tauri.toml
[build]
dev-url = "https://:3000"
# start the dev server
before-dev-command = "npm run dev"
[bundle]
active = true
icon = ["icons/app.png"]
[[app.windows]]
title = "MyApp"
[plugins.updater]
pubkey = "updater pub key"
endpoints = ["https://my.app.updater/{{target}}/{{current_version}}"]

请注意,JSON5 和 TOML 支持注释,并且 TOML 可以使用 kebab-case 来命名配置,这更符合惯例。在所有 3 种格式中,字段名都区分大小写。

除了默认配置文件,Tauri 还可以读取平台特定的配置:

  • Linux 为 tauri.linux.conf.jsonTauri.linux.toml
  • Windows 为 tauri.windows.conf.jsonTauri.windows.toml
  • macOS 为 tauri.macos.conf.jsonTauri.macos.toml
  • Android 为 tauri.android.conf.jsonTauri.android.toml
  • iOS 为 tauri.ios.conf.jsonTauri.ios.toml

平台特定的配置文件按照 JSON 合并补丁 (RFC 7396) 规范与主配置对象合并。

例如,给定以下基础 tauri.conf.json

tauri.conf.json
{
"productName": "MyApp",
"bundle": {
"resources": ["./resources"]
},
"plugins": {
"deep-link": {}
}
}

以及给定的 tauri.linux.conf.json

tauri.linux.conf.json
{
"productName": "my-app",
"bundle": {
"resources": ["./linux-assets"]
},
"plugins": {
"cli": {
"description": "My app",
"subcommands": {
"update": {}
}
},
"deep-link": {}
}
}

Linux 的解析配置将是以下对象

{
"productName": "my-app",
"bundle": {
"resources": ["./linux-assets"]
},
"plugins": {
"cli": {
"description": "My app",
"subcommands": {
"update": {}
}
},
"deep-link": {}
}
}

此外,您还可以通过 CLI 提供要合并的配置,有关更多信息,请参阅下一节。

Tauri CLI 允许您在运行 devandroid devios devbuildandroid buildios buildbundle 命令时扩展 Tauri 配置。配置扩展可以通过 --config 参数提供,可以是原始 JSON 字符串或 JSON 文件的路径。Tauri 使用 JSON 合并补丁 (RFC 7396) 规范将提供的配置值与原始解析的配置对象合并。

此机制可用于定义应用程序的多种版本或在配置应用程序捆绑包时具有更大的灵活性。

例如,要分发一个完全隔离的 beta 应用程序,您可以使用此功能配置单独的应用程序名称和标识符

src-tauri/tauri.beta.conf.json
{
"productName": "My App Beta",
"identifier": "com.myorg.myappbeta"
}

要分发此单独的 beta 应用程序,您可以在构建时提供此配置文件

npm run tauri build -- --config src-tauri/tauri.beta.conf.json

Cargo 的清单文件用于声明应用程序依赖的 Rust 包、应用程序的元数据以及其他 Rust 相关功能。如果您不打算使用 Rust 进行后端开发,那么您可能不会经常修改它,但了解它的存在及其作用很重要。

以下是 Tauri 项目的精简 Cargo.toml 文件示例

Cargo.toml
[package]
name = "app"
version = "0.1.0"
description = "A Tauri App"
authors = ["you"]
license = ""
repository = ""
default-run = "app"
edition = "2021"
rust-version = "1.57"
[build-dependencies]
tauri-build = { version = "2.0.0" }
[dependencies]
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
tauri = { version = "2.0.0", features = [ ] }

最需要注意的部分是 tauri-buildtauri 依赖项。通常,它们必须与 Tauri CLI 的次要版本一致,但这并非严格要求。如果您在尝试运行应用程序时遇到问题,您应该检查所有 Tauri 版本(tauritauri-cli)是否是其各自次要版本的最新版本。

Cargo 版本号使用 语义版本控制。在 src-tauri 文件夹中运行 cargo update 将拉取所有依赖项的最新可用语义版本兼容版本。例如,如果您将 tauri-build 的版本指定为 2.0.0,Cargo 将检测并下载版本 2.0.0.0,因为它是最新可用的语义版本兼容版本。Tauri 会在引入重大更改时更新主版本号,这意味着您应该始终能够安全地升级到最新的次要和补丁版本,而无需担心代码中断。

如果您想使用特定的 crate 版本,可以通过在依赖项的版本号前加上 = 来使用精确版本

tauri-build = { version = "=2.0.0" }

另一个需要注意的地方是 tauri 依赖项的 features=[] 部分。运行 tauri devtauri build 将根据您的 Tauri 配置自动管理项目中需要启用的功能。有关 tauri 功能标志的更多信息,请参阅文档

当您构建应用程序时,会生成一个 Cargo.lock 文件。此文件主要用于确保在开发过程中跨机器使用相同的依赖项(类似于 Node.js 中的 yarn.lockpnpm-lock.yamlpackage-lock.json)。建议将此文件提交到您的源代码仓库,以便获得一致的构建。

要了解有关 Cargo 清单文件的更多信息,请参阅官方文档

这是 Node.js 使用的包文件。如果您的 Tauri 应用程序的前端是使用基于 Node.js 的技术(例如 npmyarnpnpm)开发的,此文件用于配置前端依赖项和脚本。

Tauri 项目的精简 package.json 文件示例如下所示:

package.json
{
"scripts": {
"dev": "command to start your app development mode",
"build": "command to build your app frontend",
"tauri": "tauri"
},
"dependencies": {
"@tauri-apps/api": "^2.0.0.0",
"@tauri-apps/cli": "^2.0.0.0"
}
}

"scripts" 部分通常用于存储启动和构建 Tauri 应用程序前端的命令。上述 package.json 文件指定了您可以使用 yarn devnpm run dev 运行的 dev 命令来启动前端框架,以及您可以使用 yarn buildnpm run build 运行的 build 命令来构建前端的 Web 资产,以便在生产环境中由 Tauri 添加。使用这些脚本最便捷的方式是通过 Tauri 配置的 beforeDevCommandbeforeBuildCommand 钩子将其与 Tauri CLI 关联起来

tauri.conf.json
{
"build": {
"beforeDevCommand": "yarn dev",
"beforeBuildCommand": "yarn build"
}
}

依赖项对象指定了在运行 yarnpnpm installnpm install 时 Node.js 应该下载哪些依赖项(在本例中是 Tauri CLI 和 API)。

除了 package.json 文件外,您可能还会看到 yarn.lockpnpm-lock.yamlpackage-lock.json 文件。这些文件有助于确保当您稍后下载依赖项时,您将获得与开发过程中使用的版本完全相同的版本(类似于 Rust 中的 Cargo.lock)。

要了解有关 package.json 文件格式的更多信息,请参阅官方文档


© 2025 Tauri 贡献者。CC-BY / MIT