Nuxt.js

Nuxt 3 静的サイト構築ガイド:環境設定・SSG・デプロイ手順

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

📦 環境構築と Nuxt 3 プロジェクトの作成

このセクションでは、Node.js とパッケージマネージャーのインストールから nuxi init によるプロジェクト雛形生成までを順を追って解説します。Nuxt 3 は Node 18 以上 のランタイムと npm (or pnpm) が必須で、バージョンが古いと CLI が起動しないため、最初に環境を正しく整えることが成功の鍵です。

1. Node.js と npm / pnpm のインストール手順

公式サイトから LTS 系 (2024‑2026 年時点では v20) をダウンロードし、インストーラを実行してください。インストール後はターミナルでバージョンを確認します。

ポイント:Node 18 以上が必須です。古いバージョンでは nuxi が「command not found」になるケースがあります【[1] Nuxt Docs – Getting Started】。

2. nuxi init によるプロジェクト生成とディレクトリ構成

以下のコマンドで新規アプリを作ります。my-nuxt-app は任意のフォルダ名に置き換えてください。

生成されたディレクトリは次のようになります。

ディレクトリ 主な役割
src/ コンポーネント、ページ、スタイル等の実装コード
src/pages/ ファイルベースルーティング(/about.vue → /about
src/components/ 再利用可能な UI 部品
nuxt.config.ts アプリ全体設定ファイル

結論:Node とパッケージマネージャーが正しくインストールできたら、nuxi init で生成された構成を把握し、次の SSG 設定フェーズへ進みましょう。


🏗️ 静的サイト生成(SSG)用設定のポイント

Nuxt 3 の静的ビルドは SSR を無効化 (ssr: false) した上で prerender オプションを利用します。従来の target: 'static' は Nuxt 2 用の記述で、Nuxt 3 では削除済みです【[2] Nuxt Docs – Static Site Generation】。正しい設定ができていないとビルド時にサーバー側レンダリングが走り、期待した静的 HTML が出力されません。

1. nuxt.config.ts に SSG 用設定を追加

以下は最小構成の例です。TypeScript 推奨なので defineNuxtConfig を使います。

ポイントまとめ

設定項目 推奨値 / 書式 説明
ssr false SSR を無効化し、静的生成モードに切り替える
app.baseURL '/' (or '/subdir/') サブディレクトリでホスティングする場合のベースパス
prerender.crawlLinks true HTML 内リンクを自動的に辿ってページを生成
prerender.routes 関数または配列 API から取得した動的ルートや手動指定が必要なページ

2. router.base の代替としての app.baseURL

Nuxt 3 では router.base が非推奨となり、app.baseURL(もしくは runtimeConfig.app.baseURL)で同等の効果を得られます。以下に両者の書き方例を示します。

このように書くと、開発環境・本番環境でベースパスを切り替える のが容易になります。


🔧 ビルド実行・ローカルプレビューとデバッグ

設定が完了したら npm run generate(または pnpm generate)で静的ビルドを走らせます。生成されたファイルは dist/ ディレクトリに出力され、nuxi preview でローカルサーバーとして確認できます。

1. ビルドコマンドと出力結果

以下の手順でビルドし、出力構造を確認してください。

dist/ の典型的な構成は次の通りです。

ポイントindex.html がルートに、サブページは同名ディレクトリ配下の index.html として配置されます。これが CDN でのキャッシュ最適化と相性が良い形です。

2. ローカルプレビュー

生成物をローカルで確認するには次のコマンドを実行します。

ブラウザで http://localhost:3000 にアクセスすると、実際のデプロイ環境と同様にページ遷移やリンクが機能することが確認できます。

3. よくあるエラーと対処法

エラー 主な原因 推奨解決策
Cannot find module '@/components/…' パスエイリアス未設定 nuxt.config.tsalias@: '/src' を追加
ReferenceError: process is not defined SSR 時に環境変数を直接参照 runtimeConfig.public.xxx 経由で取得し、クライアント側でも安全に使用
404 Not Found(プレビュー) ベース URL が不一致 app.baseURL を正しいサブディレクトリに設定し、再ビルド

🚀 主要クラウドプラットフォーム別デプロイ設定

静的サイトは dist/ ディレクトリをそのままアップロードできるため、Vercel・Netlify・Cloudflare Pages・Firebase Hosting のいずれでも同様の手順で展開できます。ここではそれぞれのビルドコマンドと公開ディレクトリ設定例に加えて、キャッシュ制御やリライトルールのベストプラクティスも併記します【[4] Nuxt Docs – Deploy】。

1. Vercel (vercel.json)

Vercel はデフォルトで npm run build && npm run generate を実行しますが、明示的に書くと安心です。静的ビルド専用のアダプターは不要です。

2. Netlify (netlify.toml)

Netlify の設定はシンプルです。[build] にビルドコマンドと公開ディレクトリを記載し、全ファイルに長期キャッシュヘッダーを付与します。

3. Cloudflare Pages (wrangler.toml)

type = "javascript" を指定すると、ビルド後の dist/ が自動的にアップロード対象になります。

4. Firebase Hosting (firebase.json)

Firebase のシングルページアプリ向けリライトルールとキャッシュ設定を併せて示します。

ベストプラクティス:全プラットフォーム共通で dist/ を公開ディレクトリに指定し、長期キャッシュ (max‑age=1y) を付与すると CDN のパフォーマンスが最大化します。


🤖 CI/CD パイプラインとベストプラクティス

自動化は 品質保証デプロイ速度 を同時に向上させます。以下では GitHub Actions と GitLab CI の最小構成を示し、アーティファクト保存・キャッシュ戦略、そしてデプロイ完了後の CDN キャッシュ無効化まで網羅します【[3] Nuxt Docs – CI/CD】。

1. GitHub Actions(Vercel デプロイ例)

  • キャッシュ戦略setup-nodecache: pnpm により node_modules/.pnpm-store が再利用され、ビルド時間が 30 % 前後短縮します。
  • アーティファクトdist/ を一度保存しておくことで、別ジョブでのデプロイや手動ダウンロードが容易になります。

2. GitLab CI(GitLab Pages 用)

  • アーティファクトbuild_static ジョブから pages ジョブへ自動的に受け渡されます。
  • キャッシュnode_modules/ を保持し、パイプラインの実行コストを削減します。

3. CDN キャッシュ無効化(例:Vercel)

デプロイ完了後に Vercel の API を呼び出すだけでキャッシュが自動リフレッシュされます。GitHub Actions に以下のステップを追加すると、手作業不要です。


📚 まとめ

  1. 環境構築:Node 18+ と npm/pnpm をインストールし、nuxi init で Nuxt 3 プロジェクトを作成。
  2. SSG 設定ssr: false に加えて app.baseURL(または runtimeConfig.app.baseURL)と prerender を正しく記述することで、完全な静的サイトが生成できる。
  3. ビルド & プレビューpnpm generatedist/ が作成され、nuxi preview でローカル確認可能。エラーはエイリアス・環境変数の扱いに注意。
  4. デプロイ先別設定:Vercel、Netlify、Cloudflare Pages、Firebase Hosting のすべてが dist/ をそのまま公開できる。キャッシュヘッダーを長期に設定すると CDN 効果が最大化する。
  5. CI/CD:GitHub Actions と GitLab CI のテンプレートで自動ビルド・アーティファクト保存・デプロイまで一貫したフローを構築できる。キャッシュ戦略と CDN 無効化を組み合わせれば、リリースサイクルが大幅に短縮する。

これらの手順を踏めば、Nuxt 3 の静的サイト生成から本番デプロイまで、一貫した開発フローを実現できます。ぜひローカルで pnpm generate を試し、GitHub リポジトリにプッシュして CI が走る様子をご確認ください。


参考情報(出典)

番号 タイトル・リンク
[1] Nuxt 3 – Getting Started https://nuxt.com/docs/getting-started/installation
[2] Nuxt 3 – Static Site Generation (SSG) https://nuxt.com/docs/guide/concepts/static-site-generation
[3] Nuxt 3 – Deploy & CI/CD https://nuxt.com/docs/getting-started/deployment#ci-cd
[4] Nuxt 3 – Deployment Guides (Vercel, Netlify, Cloudflare Pages, Firebase) https://nuxt.com/docs/getting-started/deployment

スポンサードリンク

-Nuxt.js