Bootstrap

Tauri教程-基础篇-Tauri的配置说明

请添加图片描述

“如果结果不如你所愿,就在尘埃落定前奋力一搏。”——《夏目友人帐》
“有些事不是看到了希望才去坚持,而是因为坚持才会看到希望。”——《十宗罪》
“维持现状意味着空耗你的努力和生命。”——纪伯伦

Tauri 技术教程 * 第四章 Tauri的基础教程
第三节 Tauri的配置说明

前言

本章内容描述了Tauri配置方面的内容,主要说明了Tauri项目开发中都有哪些配置文件以及这些配置文件的格式,如何按照操作系统定义配置文件。第一、第二、第三部门是描述内容理解清楚,便可进行后续的学习,第四部分是对项目中经常使用的配置属性进行详细说明,这部分建议实际使用中边查阅文档边积累,前期粗略了解下即可。

一. 概述

本章节我们来学习了解下Tauri的配置文档,Tauri 是一个用于构建应用程序的工具包,许多项目设置都是可以通过配置的方式来进行实现。那么在Tauri的项目开发过程中,都有哪些配置文件呢?它们又是如何配合工作的,让我们来一起看看并了解它的原理。

在Tauri的项目开发过程中,我们常见的配置内容及文件有:

  • tauri.conf.json
  • capabilities/*.json
  • Cargo.toml
  • package.json

二. Tauri的配置说明

1.配置支持的文件格式

Tauri 的默认配置格式为 JSON。并且同时支持json5toml 的配置格式,你可以在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.jsonTauri.linux.toml对于 Linux
  • tauri.windows.conf.jsonTauri.windows.toml对于 Windows
  • tauri.macos.conf.jsonTauri.macos.toml对于 macOS
  • tauri.android.conf.jsonTauri.android.tomlAndroid 版本
  • tauri.ios.conf.jsonTauri.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: 应用程序资产的路径(通常是distjavascript 捆绑器的文件夹)或 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 应用程序名称。
;