Nuxt 4.2 と Tauri 2 を組み合わせた Vue アプリのデスクトップ/モバイルへの統合方法

1. 設定項目(統合の理由)

  • SSG / SPA を有効にする:`ssr: false`
    Tauri はサーバー依存型のソリューションをサポートしていません。そのため、Nuxt では SSR を無効にする必要があります。
  • `frontendDist` をデフォルトの `../dist` に設定
    Nuxt から生成された静的ファイルを `dist` ディレクトリに格納し、Tauri がアプリケーションに組み込むことができます。
  • 静的生成を実行:`generate`(`nuxt generate` または `nuxi generate`)
    `generate` コマンドを使用すると、ルートが事前レンダリングされ、静的デプロイ可能なファイルが作成されます。
  • (オプション)Nuxt テレメトリーを無効化
    `telemetry: false` 設定または環境変数を使用して無効化可能です。

2. Tauri 設定:src-tauri/tauri.conf.json

この設定の目的は以下の通りです:

  • `tauri dev` を実行する前に Nuxt 開発サーバーを起動し、`devUrl` でアクセス可能にする
  • `tauri build` を実行する前に `generate` を実行し、`dist/` ディレクトリに生成物を保存し、アプリケーションに組み込む

{
  "build": {
    "beforeDevCommand": "npm run dev",
    "beforeBuildCommand": "npm run generate",
    "devUrl": "http://localhost:3000",
    "frontendDist": "../dist"
  }
}

3. Nuxt 設定:nuxt.config.ts(モバイル端末対応と安定性)

以下は推奨設定です:


export default defineNuxtConfig({
  compatibilityDate: '2025-05-15',

  devtools: { enabled: true },

  ssr: false,

  devServer: { host: '0' },

  vite: {
    clearScreen: false,
    envPrefix: ['VITE_', 'TAURI_'],
    server: {
      strictPort: true,
    },
  },

  ignore: ['**/src-tauri/**'],
})

各設定の役割:

  • `ssr: false`:Nuxt をクライアントサイドレンダリングまたはスタティック生成モードにします。
  • `devServer.host: '0'`:同じネットワーク上のデバイス(特に iOS 物理端末)からサーバーにアクセスできるようにします。
  • `vite.server.strictPort: true`:ポート番号を固定し、Tauri が正しく接続できるようにします。
  • `ignore: ['**/src-tauri/**']`:監視対象から Tauri ディレクトリを除外し、EMFILE エラーを防ぎます。
  • `envPrefix`:Tauri 環境変数をフロントエンドに注入し、モバイル端末との連携を容易にします。

4. package.json スクリプト(Tauri との連携を保証)

最低限以下のようなスクリプトを定義します:


{
  "scripts": {
    "dev": "nuxt dev",
    "generate": "nuxt generate",
    "build": "nuxt build"
  }
}

`nuxt generate` はルートを事前レンダリングし、静的ファイルを出力します。

5. 開発とビルドのワンクリック実行(必要なコマンドは2つだけ)

  • 開発環境での実行:
    
    cargo tauri dev
    
  • ビルド:
    
    cargo tauri build
    

Tauri CLI はビルド時に `build.beforeBuildCommand` を実行し、静的生成物をアプリケーションに組み込みます。

6. 常見問題の迅速な解決

  • 画面が白くなる:Nuxt が 3000 番ポートを使用していることを確認し、`tauri.conf.json` でのパス設定を再確認します。
  • Nuxt HMR/WebSocket 問題:開発サーバーのホスト設定やネットワーク環境を確認し、ポート番号の固定を保証します。

タグ: Nuxt Tauri SSG SPA フロントエンド

5月17日 13:33 投稿