跳到内容
Tauri

配置文件

由于 Tauri 是一个用于构建应用程序的工具包,因此可能有很多文件需要配置项目设置。您可能会遇到一些常见的文件,例如 tauri.conf.jsonpackage.jsonCargo.toml。我们在此页面上简要解释每个文件,以帮助您找到修改哪些文件的正确方向。

Tauri 配置

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

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

支持的格式

默认的 Tauri 配置格式是 JSON。可以通过将 config-json5config-toml 功能标志(分别)添加到 Cargo.toml 中的 tauritauri-build 依赖项来启用 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: 'http://localhost: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 = "http://localhost: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。

平台特定配置

除了默认配置文件外,Tauri 还可以从以下位置读取特定于平台的配置

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

平台特定的配置文件与主配置对象合并,遵循 JSON Merge Patch (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 提供要合并的配置,请参阅以下部分以获取更多信息。

扩展配置

当运行 devandroid devios devbuildandroid buildios buildbundle 命令之一时,Tauri CLI 允许您扩展 Tauri 配置。配置扩展可以通过 --config 参数提供,可以是原始 JSON 字符串,也可以是 JSON 文件的路径。Tauri 使用 JSON Merge Patch (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.toml

Cargo 的清单文件用于声明您的应用程序依赖的 Rust crate、关于您的应用程序的元数据以及其他与 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 将拉取所有依赖项的最新可用 Semver 兼容版本。例如,如果您将 2.0.0 指定为 tauri-build 的版本,Cargo 将检测并下载版本 2.0.0.0,因为它是可用的最新 Semver 兼容版本。每当引入重大更改时,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 清单文件的更多信息,请参阅官方文档

package.json

这是 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 文件指定了 dev 命令,您可以使用 yarn devnpm run dev 运行该命令来启动前端框架,以及 build 命令,您可以使用 yarn buildnpm run build 运行该命令来构建前端的 Web 资源,以便在生产环境中由 Tauri 添加。使用这些脚本最方便的方法是通过 Tauri 配置的 beforeDevCommandbeforeBuildCommand 钩子将它们与 Tauri CLI 连接起来

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

dependencies 对象指定当您运行 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