コンテンツにスキップ
Tauri

設定ファイル

Tauri はアプリケーションを構築するためのツールキットであるため、プロジェクト設定を構成するためのファイルが多数になることもあります。よく目にする一般的なファイルは、tauri.conf.jsonpackage.jsonCargo.toml などでしょう。この章では、どのファイルを修正すべきなのかを正しく判断できるように、それぞれについて簡単に説明します。

《訳注》 設定構成 どちらも configuration の訳語。本稿では厳密な区別はなく用いているため、訳文に違和感がある場合は適宜読み替えてください。

「Tauri の設定」は、Web アプリ・ソースの定義、アプリケーションのメタデータの記述、バンドルの設定、プラグイン構成の設定、および、ウィンドウやトレイ・アイコン、メニューなどの設定による実行時の動作変更に使用されます。

このファイルは、「Tauri ランタイム」と「Tauri CLI」によって使用されています。「ビルド設定」を定義したり(tauri buildtauri dev が起動する前に実行されるコマンドなど)、アプリの 名前バージョンを設定したり、Tauri ランタイムの制御、[プラグインの設定] などが行なえます。

デフォルトの Tauri 設定形式は「JSON」です。「JSON5」あるいは「TOML」形式も、Cargo.tomltauritauri-build の依存関係に config-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" ] }

体系と値はすべての形式で同じですが、書式設定はそれぞれのファイルの形式と一致している必要があります:

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 は以下の場所からプラットフォーム固有の設定を読み取ることができます:

  • Linux 用: tauri.linux.conf.json または Tauri.linux.toml
  • Windows 用: tauri.windows.conf.json または Tauri.windows.toml
  • macOS 用: tauri.macos.conf.json または Tauri.macos.toml
  • Android 用: tauri.android.conf.json または Tauri.android.toml
  • iOS 用: tauri.ios.conf.json または Tauri.ios.toml

プラットフォーム固有の設定ファイルは、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 用の最終的な構成は次のオブジェクトのようになります:

《訳注》 最終的な構成 原文は resolved configuration。直訳「解決された設定/構成」。「最終的に決定された」意味と解釈して訳してあります。次項「設定の拡張」での表現も同様。

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

さらには、CLI(コマンド・ライン・インターフェース)経由でマージする設定を行なうこともできます。詳細については、次項を参照してください。

Tauri CLI を使用すると、devandroid devios devbuildandroid buildios build、または bundle コマンドのいずれかを実行するときに、Tauri の設定を拡張できます。 拡張設定は、JSON 文字列をそのままの形で、あるいは JSON ファイルへのパスとして、--config 引数により与えることが可能です。 Tauri は JSON Merge Patch (RFC 7396) 仕様を使用して、提供された設定値を元々の最終的な構成オブジェクトとマージします。

このメカニズムを使用すると、アプリケーションの複数のフレーバーを定義したり、アプリケーション・バンドルを構成する際の柔軟性を高めたりすることができます。

たとえば、正式版とは完全に切り離されたベータ版アプリケーションを配布するには、この機能を使用して別のアプリケーション名と識別子を設定できます:

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

この切り離されたベータ版アプリを配布するには、ビルド時に以下の設定ファイルを作成します:

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 のバージョン番号は セマンティック・バージョニング (Semver)方式[参考]を使用しています。src-tauri フォルダー内の cargo update を実行すると、すべての依存関係に対して Semver 互換の最新バージョンが取得されます。たとえば、tauri-build のバージョンとして 2.0.0 を指定すると、Cargo は最新の Semver 互換バージョンである 2.0.0.0 を検出してダウンロードします。Tauri は、重大な変更が導入されるときには「メジャー・バージョン番号」を更新します。つまり、最新のマイナー・バージョンとパッチ・バージョンの更新では、自分のコードが〔最新機能で〕破壊されることを心配することなく、常に安全にアップグレード可能です。

特定のクレート・バージョンを使用したい場合には、依存関係のバージョン番号の前に = を追加することで、指定したバージョンを使用できます:

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

さらに注意すべき事は、tauri 依存関係の features=[] 部分です。tauri devtauri build を実行すると、「Tauri の設定」に基づいてあなたのプロジェクトでどの機能を有効化する必要があるのかを自動的に判断します。tauri 機能フラグの詳細については、こちらのドキュメント(英語版) を参照してください。

アプリケーションをビルドすると、Cargo.lock ファイルが生成されます。このファイルは主に、開発中、マシン同士で同じ依存関係が使用されるようにするために使用されます(Node.js の yarn.lockpnpm-lock.yaml、あるいは package-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"
}
}

Tauri アプリケーションで使用されるフロントエンドの起動とビルドに使用されるコマンドの保存には、"scripts" セクションを使用するのが一般的です。 上記の package.json ファイルでは、「dev コマンド」と「build コマンド」を指定しています。「dev コマンド」はフロントエンド・フレームワークを起動するために yarn dev または npm run dev を使用して実行され、「build コマンド」は本番環境で Tauri によって追加されるフロントエンドの Web アセットをビルドするために yarn build または npm run build を使用して実行されます。 このようなスクリプトを使用する最も便利な方法は、「Tauri の設定」の beforeDevCommand および beforeBuildCommand のフックを経由して、Tauri CLI でそのスクリプトをフックすることです:

《訳注》 フック 原文 hooks。プログラム中の特定の箇所(フック)に、利用者が独自の処理を追加(フック)できるようにする仕組み(Wikipedia

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

依存関係オブジェクトは、yarnpnpm install、あるいは npm install のいずれかを実行するときに(この場合 Tauri CLI と API で)、 Node.js がどの依存関係をダウンロードするかを指定します。

package.json ファイルに加えて、yarn.lockpnpm-lock.yaml、または package-lock.json ファイルが表示される場合があります。これらのファイルは、後で依存関係をダウンロードする際に、開発中に使用したものと全く同じバージョンを確実に取得するために役立ちます(Rust の Cargo.lock と同様です)。

package.json ファイル形式」の詳細については、公式ドキュメント(英語版)を参照してください。

【※ この日本語版は、「Mar 29, 2025 英語版」に基づいています】


© 2025 Tauri Contributors. CC-BY / MIT