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 問題:開発サーバーのホスト設定やネットワーク環境を確認し、ポート番号の固定を保証します。