設定ファイル
Tauri はアプリケーションを構築するためのツールキットであるため、プロジェクト設定を構成するためのファイルが多数になることもあります。よく目にする一般的なファイルは、tauri.conf.json
、package.json
、Cargo.toml
などでしょう。この章では、どのファイルを修正すべきなのかを正しく判断できるように、それぞれについて簡単に説明します。
《訳注》 設定と構成 どちらも configuration の訳語。本稿では厳密な区別はなく用いているため、訳文に違和感がある場合は適宜読み替えてください。
「Tauri の設定」は、Web アプリ・ソースの定義、アプリケーションのメタデータの記述、バンドルの設定、プラグイン構成の設定、および、ウィンドウやトレイ・アイコン、メニューなどの設定による実行時の動作変更に使用されます。
このファイルは、「Tauri ランタイム」と「Tauri CLI」によって使用されています。「ビルド設定」を定義したり(tauri build
や tauri dev
が起動する前に実行されるコマンドなど)、アプリの 名前 や バージョンを設定したり、Tauri ランタイムの制御、[プラグインの設定] などが行なえます。
デフォルトの Tauri 設定形式は「JSON」です。「JSON5」あるいは「TOML」形式も、Cargo.toml
の tauri
と tauri-build
の依存関係に config-json5
あるいは config-toml
機能フラグをそれぞれ追加することで有効化できます。
[build-dependencies]tauri-build = { version = "2.0.0", features = [ "config-json5" ] }
[dependencies]tauri = { version = "2.0.0", features = [ "config-json5" ] }
体系と値はすべての形式で同じですが、書式設定はそれぞれのファイルの形式と一致している必要があります:
{ 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}}'], }, },}
[build]dev-url = "http://localhost:3000"# start the dev serverbefore-dev-command = "npm run dev"
[bundle]active = trueicon = ["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
があるとします:
{ "productName": "MyApp", "bundle": { "resources": ["./resources"] }, "plugins": { "deep-link": {} }}
さらに、指定されたプラットフォーム固有の 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 を使用すると、dev
、android dev
、ios dev
、build
、android build
、ios build
、または bundle
コマンドのいずれかを実行するときに、Tauri の設定を拡張できます。
拡張設定は、JSON 文字列をそのままの形で、あるいは JSON ファイルへのパスとして、--config
引数により与えることが可能です。
Tauri は JSON Merge Patch (RFC 7396) 仕様を使用して、提供された設定値を元々の最終的な構成オブジェクトとマージします。
このメカニズムを使用すると、アプリケーションの複数のフレーバーを定義したり、アプリケーション・バンドルを構成する際の柔軟性を高めたりすることができます。
たとえば、正式版とは完全に切り離されたベータ版アプリケーションを配布するには、この機能を使用して別のアプリケーション名と識別子を設定できます:
{ "productName": "My App Beta", "identifier": "com.myorg.myappbeta"}
この切り離されたベータ版アプリを配布するには、ビルド時に以下の設定ファイルを作成します:
npm run tauri build -- --config src-tauri/tauri.beta.conf.json
yarn tauri build --config src-tauri/tauri.beta.conf.json
pnpm tauri build --config src-tauri/tauri.beta.conf.json
deno task tauri build --config src-tauri/tauri.beta.conf.json
bun tauri build --config src-tauri/tauri.beta.conf.json
cargo tauri build --config src-tauri/tauri.beta.conf.json
Cargo のマニフェスト・ファイルは、アプリが依存する Rust クレート、アプリに関するメタデータ、およびその他の Rust 関連の機能を宣言するために使用されます。Rust を使用してアプリのバックエンド開発を行なうつもりがないのであれば、このファイルの変更はあまり行なわないかもしれませんが、このようなファイルがあり、それが何をするのかを知っておくことは重要です。
以下は、Tauri プロジェクトの必要最低限の 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-build
と tauri
の依存関係です。通常、このふたつは両方とも Tauri CLI と同様、最新の「最新バグ修正版(マイナー・バージョン)」である必要がありますが、これは厳密には必須ではありません。アプリの実行中に問題が発生した場合には、すべての Tauri バージョン (tauri
と tauri-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 dev
と tauri build
を実行すると、「Tauri の設定」に基づいてあなたのプロジェクトでどの機能を有効化する必要があるのかを自動的に判断します。tauri
機能フラグの詳細については、こちらのドキュメント(英語版) を参照してください。
アプリケーションをビルドすると、Cargo.lock
ファイルが生成されます。このファイルは主に、開発中、マシン同士で同じ依存関係が使用されるようにするために使用されます(Node.js の yarn.lock
、pnpm-lock.yaml
、あるいは package-lock.json
と同様です)。一貫性のあるビルドを得るために、このファイルをあなたのソース・リポジトリにコミットすることをお勧めします。
Cargo マニフェスト・ファイルの詳細については、公式ドキュメント(英語版) を参照してください。
これは、Node.js で使用されるパッケージ・ファイルです。Tauri アプリのフロントエンドが Node.js ベースの技術(npm
、yarn
、pnpm
など)を使用して開発されている場合、このファイルはフロントエンドの依存関係とスクリプトを構成するために使用されます。
Tauri プロジェクトの必要最低限の 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)
{ "build": { "beforeDevCommand": "yarn dev", "beforeBuildCommand": "yarn build" }}
依存関係オブジェクトは、yarn
、pnpm install
、あるいは npm install
のいずれかを実行するときに(この場合 Tauri CLI と API で)、 Node.js がどの依存関係をダウンロードするかを指定します。
package.json
ファイルに加えて、yarn.lock
、pnpm-lock.yaml
、または package-lock.json
ファイルが表示される場合があります。これらのファイルは、後で依存関係をダウンロードする際に、開発中に使用したものと全く同じバージョンを確実に取得するために役立ちます(Rust の Cargo.lock
と同様です)。
「package.json
ファイル形式」の詳細については、公式ドキュメント(英語版)を参照してください。
【※ この日本語版は、「Mar 29, 2025 英語版」に基づいています】
© 2025 Tauri Contributors. CC-BY / MIT