Next.js プロジェクト構造

このページでは、Next.jsプロジェクトのファイルとフォルダ構造の概要を説明します。トップレベルのファイルとフォルダ、設定ファイル、および apppages ディレクトリ内のルーティング規則について解説します。

トップレベルフォルダ

appApp Router
pagesPages Router
public静的アセットを配置する場所
srcオプションのアプリケーションソースフォルダ

トップレベルファイル

Next.js
next.config.jsNext.jsの設定ファイル
package.jsonプロジェクトの依存関係とスクリプト
instrumentation.tsOpenTelemetryと計装ファイル
middleware.tsNext.jsリクエストミドルウェア
.env環境変数
.env.localローカル環境変数
.env.production本番環境変数
.env.development開発環境変数
.eslintrc.jsonESLint設定ファイル
.gitignoreGitで無視するファイルとフォルダ
next-env.d.tsNext.js用TypeScript宣言ファイル
tsconfig.jsonTypeScript設定ファイル
jsconfig.jsonJavaScript設定ファイル

app ルーティング規則

ルーティングファイル

layout.js .jsx .tsxレイアウト
page.js .jsx .tsxページ
loading.js .jsx .tsxローディングUI
not-found.js .jsx .tsx404ページUI
error.js .jsx .tsxエラーUI
global-error.js .jsx .tsxグローバルエラーUI
route.js .tsAPIエンドポイント
template.js .jsx .tsx再レンダリングされるレイアウト
default.js .jsx .tsx並列ルートのフォールバックページ

ネストされたルート

folderルートセグメント
folder/folderネストされたルートセグメント

ダイナミックルート

[folder]ダイナミックルートセグメント
[...folder]キャッチオールルートセグメント
[[...folder]]オプションのキャッチオールルートセグメント

ルートグループとプライベートフォルダ

(folder)ルーティングに影響を与えずにルートをグループ化
_folderフォルダと子セグメントをルーティングから除外

並列ルートとインターセプトリート

@folder名前付きスロット
(.)folder同じレベルのインターセプト
(..)folder1レベル上のインターセプト
(..)(..)folder2レベル上のインターセプト
(...)folderルートからのインターセプト

メタデータファイル規則

アプリアイコン

favicon.icoファビコンファイル
icon.ico .jpg .jpeg .png .svgアプリアイコンファイル
icon.js .ts .tsx生成されたアプリアイコン
apple-icon.jpg .jpeg, .pngAppleアプリアイコンファイル
apple-icon.js .ts .tsx生成されたAppleアプリアイコン

Open GraphとTwitter画像

opengraph-image.jpg .jpeg .png .gifOpen Graph画像ファイル
opengraph-image.js .ts .tsx生成されたOpen Graph画像
twitter-image.jpg .jpeg .png .gifTwitter画像ファイル
twitter-image.js .ts .tsx生成されたTwitter画像

SEO

sitemap.xmlサイトマップファイル
sitemap.js .ts生成されたサイトマップ
robots.txtrobotsファイル
robots.js .ts生成されたrobotsファイル

pages ルーティング規則

特別なファイル

_app.js .jsx .tsxカスタムApp
_document.js .jsx .tsxカスタムDocument
_error.js .jsx .tsxカスタムエラーページ
404.js .jsx .tsx404エラーページ
500.js .jsx .tsx500エラーページ

ルート

フォルダ規則
index.js .jsx .tsxホームページ
folder/index.js .jsx .tsxネストされたページ
ファイル規則
index.js .jsx .tsxホームページ
file.js .jsx .tsxネストされたページ

ダイナミックルート

フォルダ規則
[folder]/index.js .jsx .tsxダイナミックルートセグメント
[...folder]/index.js .jsx .tsxキャッチオールルートセグメント
[[...folder]]/index.js .jsx .tsxオプションのキャッチオールルートセグメント
ファイル規則
[file].js .jsx .tsxダイナミックルートセグメント
[...file].js .jsx .tsxキャッチオールルートセグメント
[[...file]].js .jsx .tsxオプションのキャッチオールルートセグメント