Tauri CLI を最新版にアップグレードする

@tauri-apps/cli だけでなく tauri クレート・@tauri-apps/api・各プラグインの JS/Rust 両側を揃えて更新する手順。tauri info の読み方と不一致エラーも扱う。

環境構築 対象: Tauri 2.x 更新日: 読了目安: 約6分 env-014
目次
  1. 1. 現在の状態を確認する
  2. 2. JavaScript 側を更新する
  3. 3. Rust 側を更新する
  4. 4. 再確認とビルド
  5. 動作確認
  6. よくあるエラーと対処法
  7. tauri build が CLI と tauri クレートのバージョン不一致を指摘して止まる
  8. JS 側で新しい関数を呼ぶと Command ... not found / ... not allowed という趣旨のエラー
  9. cargo update しても tauri が上がらない
  10. error: failed to select a version for the requirement ...
  11. Tauri v1 からの移行
  12. 注意点
  13. 関連レシピ

Tauri 2 は 2.x 系の中でも数週間おきにパッチやマイナーが出ます。押さえておきたいのは、「CLI を上げる」だけでは終わらないことです。Tauri プロジェクトには JavaScript 側と Rust 側に対になるパッケージがあり、片方だけ新しくすると「新しい JS API が呼ぶコマンドを古い Rust 側が知らない」という形で壊れます。

役割JavaScript (package.json)Rust (src-tauri/Cargo.toml)
CLI@tauri-apps/cli(cargo install tauri-cli を使う場合のみ)
コア API@tauri-apps/apitauri, tauri-build
プラグイン@tauri-apps/plugin-fs などtauri-plugin-fs など

この 3 段をまとめて更新するのが本レシピの手順です。

1. 現在の状態を確認する

npm run tauri info

出力は Environment / Packages / Plugins / App の 4 ブロックです。

[✔] Environment
    - OS: Windows 10.0.26200 x86_64 (X64)
    ✔ WebView2: 1xx.0.xxxx.xx
    ✔ rustc: 1.8x.0 (...)
    ✔ Rust toolchain: stable-x86_64-pc-windows-msvc (default)
    - node: 22.x.x
    - npm: 10.x.x

[-] Packages
    - tauri 🦀: 2.x.x
    - tauri-build 🦀: 2.x.x
    - @tauri-apps/api : 2.x.x
    - @tauri-apps/cli : 2.x.x

[-] Plugins
    - tauri-plugin-opener 🦀: 2.x.x
    - @tauri-apps/plugin-opener : 2.x.x

[-] App
    - frontendDist: ../dist
    - devUrl: http://localhost:1420/

見るべきは Packages と Plugins で、🦀 (Rust) 行と JS 行の組が同じマイナーバージョンかです。tauri と @tauri-apps/api、tauri-plugin-xxx と @tauri-apps/plugin-xxx がそれぞれペアです。パッチ番号までは一致しなくても動きますが、マイナーがずれていると後述のエラーの原因になります。tauri info は Cargo.lock / package-lock.json に解決済みの実バージョンを表示するので、Cargo.toml に "2" と書いてあっても実際に何が使われているかが分かります。

2. JavaScript 側を更新する

npm install -D @tauri-apps/cli@latest
npm install @tauri-apps/api@latest
# 使っているプラグインをすべて列挙する
npm install @tauri-apps/plugin-opener@latest @tauri-apps/plugin-fs@latest

npm outdated | grep tauri で @tauri-apps/ 配下の古いものだけを一覧できます。

3. Rust 側を更新する

Cargo.toml の指定が tauri = { version = "2", ... } のようなメジャーだけの書き方なら、cargo update で 2.x 系の最新に上がります。

cd src-tauri
cargo update
# 特定クレートだけ上げたい場合
cargo update -p tauri -p tauri-build
cd ..

cargo update は Cargo.toml を書き換えず Cargo.lock だけを更新します。Cargo.toml に "2.3.1" のように細かく固定しているときは、先に Cargo.toml 側の数字を書き換えてから実行してください。

Cargo 版の CLI (cargo tauri) をグローバルに入れている場合は再インストールで更新します。

cargo install tauri-cli --version "^2.0.0" --locked

4. 再確認とビルド

npm run tauri info
npm run tauri dev

Cargo.lock と package-lock.json の差分をコミットに含めます。CI で同じバージョンが再現されるのは、この 2 つのロックファイルがあるからです。

動作確認

npm run tauri info の Packages / Plugins で 🦀 行と JS 行のマイナーが揃っていれば完了です。npm run tauri dev が通り、アプリ内で getTauriVersion() (Tauri のバージョン情報を取得する) を呼ぶと新しいバージョン文字列が返ります。

よくあるエラーと対処法

tauri build が CLI と tauri クレートのバージョン不一致を指摘して止まる

CLI は Cargo.lock の tauri クレートと自分のバージョンを照合し、互換性のない組み合わせだと「version mismatch」という趣旨のエラーで停止します。手順 2 と 3 を両方やり直すのが正解です。一時的に通したいときだけ npm run tauri build -- --ignore-version-mismatches があります。

JS 側で新しい関数を呼ぶと Command ... not found / ... not allowed という趣旨のエラー

@tauri-apps/plugin-xxx だけ新しくなり、Rust 側の tauri-plugin-xxx が古いケースです。新バージョンで追加されたコマンドが Rust 側に存在しないため invoke が失敗します。cargo update -p tauri-plugin-xxx で揃えます。新コマンド用の権限識別子を capabilities/default.json に足す必要がある場合もあります。

cargo update しても tauri が上がらない

Cargo.toml の指定が "=2.3.1" のように固定されているか、親ディレクトリに Cargo.lock を持つワークスペースがあって src-tauri/Cargo.lock が使われていない可能性があります。cargo update --dry-run で更新対象を先に確認します。

error: failed to select a version for the requirement ...

複数のクレートが矛盾するバージョンを要求しています。多くはサードパーティのプラグインが古い tauri に依存しているケースで、そのプラグインの更新を待つか、tauri の指定を一段古いマイナーに戻します。

Tauri v1 からの移行

v1 プロジェクトは cargo update では v2 になりません。CLI の migrate サブコマンドが、tauri.conf.json の構造変更、allowlist から capabilities への変換、@tauri-apps/api の import パス変更などを自動で書き換えます。

npm install -D @tauri-apps/cli@latest
npm run tauri migrate

自動変換は補助にすぎず、公式のアップグレードガイドを全部読んで手作業で仕上げる必要があります。特にプラグインへ切り出された API (fs, dialog, shell, http など) は npm run tauri add <plugin> で個別に追加し直します。

注意点

  • 2.x 系のマイナー更新でも、プラグインの権限識別子や既定の権限セットが変わることがあります。更新後は capabilities/ と src-tauri/gen/schemas/ に生成されるスキーマを見比べてください。
  • 更新の粒度は「CLI + api + 全プラグインを同じ日に上げる」が最も安全です。1 つずつ上げると不一致状態が長く続きます。

関連レシピ

参考リンク(公式ドキュメント)

Web Ninja

この記事を書いた人

Web Ninja ウェブエンジニア (Web Engineer)

会社員ネットワークエンジニアから独立してかれこれ 25 年以上 Web エンジニアとして活動中。普段は JavaScript と Node.js を自在に操り、時には C++ や Perl といった古流の技も嗜みます。近年は Tauri × Rust という新たな武器を手に、デスクトップアプリ開発の最前線を駆け抜けています。「作りたい」を「作れる」に変えるための、実践的な「技」をお届けします。

お問い合わせ: tauri.ninja@gmail.com

内容の誤り・動かないコードを報告する