はじめに
Next.jsを触ったことがあるものの、基礎的な部分がよくわかっていないまま開発をしていたので、改めて一から勉強し直すためにまとめていこうと思いました。
今回はNext.jsのプロジェクト構造についてです。
プロジェクト構造
今回まとめているのは、Pages RouterのNext.js ver14の内容です。
Top level folder
-
public:静的なファイル(画像、フォント、スタイルシート等)を置く -
src:プロジェクトのソースコードを整理するために任意で使用されるディレクトリ -
pages:Pages Router用。srcの中にある場合もある
Top level file
-
next.config.js:Next.js の設定ファイル -
package.json:プロジェクトの依存関係とスクリプト -
instrumentation.ts:OpenTelemetry等、アプリケーションのパフォーマンスや動作を計測・監視するためのコードを記述するファイル -
middleware.ts:ミドルウェアを設定するファイル -
.env:環境変数 -
.env.local:ローカル環境変数 -
.env.production:本番環境変数 -
.env.development:開発環境変数 -
.eslintrc.json:ESLintの設定ファイル -
.gitignore:git管理から外すファイルを記載するファイル -
next-env.d.ts:Next.js の TypeScript 宣言ファイル -
tsconfig.json:TypeScript の設定ファイル -
jsconfig.json:JavaScript の設定ファイル
pagesディレクトリ内
ファイル
-
_app.js|.jsx|.tsx:Next.js のカスタム App コンポーネントを定義する。これによって、全てのページに共通のレイアウトや状態管理、グローバルなスタイルを適用できる -
_document.js|.jsx|.tsx:Next.js のカスタム Document コンポーネントを定義する。これによって、サーバーサイドでレンダリングされる HTML ドキュメントの構造をカスタマイズ(<html>や<body>タグのカスタマイズ、メタタグの追加、カスタムフォントの読み込み等)できる -
_error.js|.jsx|.tsx:アプリケーション内で発生するエラー(404エラーや500エラーなど)に対してカスタマイズされたエラーページを表示できる -
404.js|.jsx|.tsx:404 エラーページ -
500.js|.jsx|.tsx:500 エラーページ
ディレクトリ構成
Routes
パターン1
pages/
├── index.js // ホームページ (/)
├── about.js // ネストされたページ (/about)
└── contact.js // ネストされたページ (/contact)
パターン2
pages/
├── index.js // ホームページ (/)
├── about/
│ └── index.js // ネストされたページ (/about)
└── contact/
└── index.js // ネストされたページ (/contact)
Dynamic Routes
パターン1
pages/
├── [user]/
│ └── index.js // 動的ルートセグメント (/user1, /user2)
├── [...slug]/
│ └── index.js // キャッチオールルートセグメント (/a, /a/b, /a/b/c)
└── [[...slug]]/
└── index.js // オプションキャッチオールルートセグメント (/, /a, /a/b, /a/b/c)
パターン2
pages/
├── post/
│ └── [id].js // 動的ルートセグメント (/post/1, /post/2)
├── docs/
│ └── [...slug].js // キャッチオールルートセグメント (/docs/a, /docs/a/b, /docs/a/b/c)
└── docs/
└── [[...slug]].js // オプションキャッチオールルートセグメント (/docs, /docs/a, /docs/a/b, /docs/a/b/c)
参考