“如果结果不如你所愿,就在尘埃落定前奋力一搏。”——《夏目友人帐》
“有些事不是看到了希望才去坚持,而是因为坚持才会看到希望。”——《十宗罪》
“维持现状意味着空耗你的努力和生命。”——纪伯伦
第三节 Tauri的配置说明
前言
本章内容描述了Tauri配置方面的内容,主要说明了Tauri项目开发中都有哪些配置文件以及这些配置文件的格式,如何按照操作系统定义配置文件。第一、第二、第三部门是描述内容理解清楚,便可进行后续的学习,第四部分是对项目中经常使用的配置属性进行详细说明,这部分建议实际使用中边查阅文档边积累,前期粗略了解下即可。
一. 概述
本章节我们来学习了解下Tauri的配置文档,Tauri 是一个用于构建应用程序的工具包,许多项目设置都是可以通过配置的方式来进行实现。那么在Tauri的项目开发过程中,都有哪些配置文件呢?它们又是如何配合工作的,让我们来一起看看并了解它的原理。
在Tauri的项目开发过程中,我们常见的配置内容及文件有:
tauri.conf.json
- capabilities/*.json
- Cargo.toml
- package.json
二. Tauri的配置说明
1.配置支持的文件格式
Tauri 的默认配置格式为 JSON。并且同时支持json5或
toml 的配置格式,你可以在Cargo.toml 文件中,修改 tauri 和 tauri-build 的配置来开启对 conf-json5 或 config-toml的启用。修改方式如下:
Cargo.toml
[build-dependencies]
tauri-build = { version = "2.0.0", features = [ "config-json5" ] }
[dependencies]
tauri = { version = "2.0.0", features = [ "config-json5" ] }
下面我们来看看 json 和 toml 2中配置格式的文件内容
-
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}}"]
2. 多平台配置
除了默认配置文件之外,Tauri 可以加载特定平台的配置来读取内容,这为我们在windows、linux、macos等提供了方面,配置方式如下:
tauri.linux.conf.json
或Tauri.linux.toml
对于 Linuxtauri.windows.conf.json
或Tauri.windows.toml
对于 Windowstauri.macos.conf.json
或Tauri.macos.toml
对于 macOStauri.android.conf.json
或Tauri.android.toml
Android 版本tauri.ios.conf.json
或Tauri.ios.toml
适用于 iOS
多平台的配置会和默认配置形成合并
3. 指定配置文件
Tauri CLI 允许我们在启动或者构建应用时指定配置文件的方式,来支持配置,方式如下:
pnpm tauri build --config src-tauri/tauri.cus.conf.json
这样可以极大的增加我们的配置灵活性。
三. Cargo.toml 和 package.json
cargo.toml 是用来管理所依赖的 Rust 包,这个配置文件主要用于Rust的服务应用开发,遵循Rust的编程理念,没有什么特殊的地方。
package.json 是Node.js 使用的包文件,用于管理前端应用的依赖项和脚本。
四. Tauri的核心配置说明
Tauri的核心配置 主要说明的是 tauri.conf.json的文件内容
官方配置文档:https://tauri.app/reference/config/
1. 配置实例
{
"productName": "tauri-app",
"version": "0.1.0",
"build": {
"beforeBuildCommand": "",
"beforeDevCommand": "",
"devUrl": "../dist",
"frontendDist": "../dist"
},
"app": {
"security": {
"csp": null
},
"windows": [
{
"fullscreen": false,
"height": 600,
"resizable": true,
"title": "Tauri App",
"width": 800
}
]
},
"bundle": {},
"plugins": {}
}
2. 配置结构
- $schema 配置文件的描述说明
- productName 应用的名称,程序的标题
- version 应用的版本号
- identifier (required) 应用唯一标识
- mainBinaryName 主程序入口
- app 应用配置
- build 应用构建配置
- bundle 应用安装配置
- plugins 插件配置,如:更新
3. 配置核心属性
1.App 配置内容
-
enableGTKAppI
boolean:如果设置为 true,“标识符”将被设置为 GTK 应用程序 ID(在使用 GTK 的系统上)。
-
macOSPrivateApi
boolean:MacOS 私有 API 配置。启用透明背景 API 并将
fullScreenEnabled
首选项设置为true
。 -
security
-
assetProtocol: 资源协议配置
-
enable
boolean: 启用资源协议
-
scope:
string
[] | Object Properties::资源协议的访问范围 默认值 []
-
-
capabilities
CapabilityEntry
[]:应用程序上启用的功能列表。如果列表为空,则包含所有功能。默认:[]
-
csp
无需要配置,采用默认的方式即可,若需要自定义CSP的内容时,在进行修改。
-
dangerousDisableAssetCspModification
boolean: 如果
true
,则禁用所有 CSP 修改。false
是默认值,它配置 Tauri 来控制 CSP。string[] : 禁用给定的 CSP 指令修改列表。
-
devCsp:
无需要配置,采用默认的方式即可
-
freezePrototype
boolean:
Object.prototype
使用自定义协议时冻结。 -
headers
HeaderConfig
|null
这些标头会添加到 tauri 向 Web 视图发送的每个 http 响应中,但不包括 IPC 消息和错误响应 -
pattern
PatternKind
: IPC模式配置,默认值:brownfield
-
-
trayIcon
TrayIconConfig
|null
:应用托盘配置 一般自定义托盘,这配置不太灵活 -
windows : 窗口配置
- acceptFirstMouse:单击非活动窗口是否也会点击进入 macOS 上的 webview
- additionalBrowserArgs:在 Windows 上定义附加浏览器参数。
- alwaysOnBottom:窗口是否应始终位于其他窗口下方。
- alwaysOnTop:窗口是否应始终位于其他窗口上方。
- backgroundColor:窗口的背景色
- browserExtensionsEnabled:是否可以为 webview 进程安装浏览器扩展
- center:窗口是否以居中方式启动。
- closable:窗口的原生关闭按钮是否启用。默认为true
- contentProtected:防止窗口内容被其他应用程序捕获。
- create:是否应该在应用程序启动时创建此窗口。默认:
true
- decorations:窗口是否应有边框和条,默认**:
true
- devtools:启用 Web 检查器(通常称为浏览器开发工具)。默认启用。
- dragDropEnabled:是否在 Web 视图上启用拖放功能。默认情况下启用。默认:
true
,配合CSS属性使用 - focus:
- fullscreen
- height
- hiddenTitle:隐藏标题
- incognito:是否应以隐身模式启动 Web 视图。
- label
- maxHeight
- maximizable
- maximized
- maxWidth
- minHeight
- minimizable
- minWidth
- **parent:**将与此标签关联的窗口设置为要创建的窗口的父窗口。
- proxyUrl
- resizable:窗口是否可调整大小。
- shadow:窗口是否有阴影。
- skipTaskbar:如果
true
,则会隐藏 Windows 和 Linux 任务栏中的窗口图标。 - tabbingIdentifier
- theme
- title
- titleBarStyle
- transparent:窗口是否透明。
- url:窗口 Web 视图 URL。默认:
"index.html"
- useHttpsScheme
- userAgent
- visible:窗口是否可见。
- visibleOnAllWorkspaces
- width
- windowClassname
- windowEffects:
WindowEffectsConfig
|null
窗口效果。Windows:如果使用装饰或阴影,您可能需要尝试此解决方法< https://github.com/tauri-apps/tao/issues/72#issuecomment-975607891 > - x
- y
- zoomHotkeysEnabled:是否启用通过热键缩放页面
-
withGlobalTauri
boolean: 是否注入 Tauri API
window.__TAURI__
。
app中 配置的内容看上去比较多,一些重要的属性,我已经加粗表示出来了,其他属性用到时,查阅文档即可。
window 在实际项目开发中我们不会将所有的窗口在tauri中进行创建,而是使用window api 进行动态创建。后面我们会讲。
2. build 构建配置
-
beforeBuildCommand
HookCommand
|null
: build`启动前要运行的 shell 命令 -
beforeBundleCommand
HookCommand
|null
: 捆绑阶段`前要运行的 shell 命令 -
beforeDevCommand
BeforeDevCommand
|null
: 启动前要运行的 shell 命令。 -
devUrl
string
|null
:就是前端项目的地址,如果您没有开发服务器或不想使用开发服务器,请忽略此选项并使用frontendDist
并指向 Web 资源目录,Tauri CLI 将运行其内置开发服务器并提供简单的热重加载体验。 -
features
string
|null
:传递给cargo
命令的功能。 -
frontendDist
FrontendDist
|null
: 应用程序资产的路径(通常是dist
javascript 捆绑器的文件夹)或 URL,该 URL 可以是 tauri 应用程序中注册的自定义协议(例如myprotocol://
:)或远程 URL(例如https://site.com/app
:)。当提供相对于配置文件的路径时,它将被递归读取,并且所有文件都嵌入到应用程序二进制文件中。然后,Tauri 会查找
index.html
并将其作为应用程序的默认入口点。 -
runner
用于构建和运行应用程序的二进制文件。
这部分的配置内容较少,关注点也比较单一。
3. bundle 配置
-
active
-
android
-
category:应用程序类型。
-
copyright:版权字符串
-
createUpdaterArtifacts:是否生成更新程序及其签名
-
externalBin:嵌入到您的应用程序中的二进制文件的绝对或相对路径列表
请注意,Tauri 将按照“binary-name{-target-triple}{.system-extension}”模式查找特定于系统的二进制文件。
例如,对于外部二进制文件“my-binary”,Tauri 寻找:
- Windows 上的“my-binary-x86_64-pc-windows-msvc.exe”
- macOS 上的“my-binary-x86_64-apple-darwin”
- Linux 的“my-binary-x86_64-unknown-linux-gnu”
所以不要忘记为所有目标平台提供二进制文件。
-
fileAssociations
-
homepage:应用程序主页的 URL。如果未设置,将返回到Cargo.toml 文件中
homepage
中定义的 URL -
icon:图标
-
iOS
-
license:允可证,默认为 Cargo.toml 文件中的许可证。
-
licenseFile:许可证文件的路径。
-
linux
-
longDescription
-
macOS
-
publisher:应用程序的发布者
-
resources:项目资源
-
shortDescription
-
targets:目标文件类型,目前支持 [“deb”、“rpm”、“appimage”、“nsis”、“msi”、“app”、“dmg”] 或“all”。,默认:
"all"
-
useLocalToolsDir
-
windows 窗口的配置
-
allowDowngrades:是否允许客户安装旧版本
-
certificateThumbprint:签名证书的 SHA1 哈希
-
digestAlgorithm:指定用于创建文件签名的文件摘要算法。代码签名时必需。建议使用 SHA-256。
-
nsis:使用 NSIS 生成的安装程序的配置。,配置参见:
NsisConfig
-
signCommand
-
timestampUrl:时间戳期间使用的服务器。
-
tsp:是否使用时间戳协议 (TSP,又名 RFC 3161) 作为时间戳服务器。您的代码签名提供商可能使用 TSP 时间戳服务器,例如 SSL.com 就是如此。如果是,请设置为 true 以启用 TSP。
-
webviewInstallMode:Webview2 运行时的安装模式。
{ "silent": true, "type": "downloadBootstrapper" }
-
wix:使用 WiX 生成的 MSI 的配置。配置参见:
WixConfig
-
4. identifier productName 和 version
- version: 版本号
- identifier 反向域名表示法表示的应用程序标识符
- productName 应用程序名称。