Menu

next.config.js

Next.jsはプロジェクトディレクトリのルート(例えばpackage.jsonの横)に配置されたnext.config.jsファイルを通じてデフォルトエクスポートで設定できます。

next.config.js
// @ts-check
 
/** @type {import('next').NextConfig} */
const nextConfig = {
  /* ここに設定オプションを記述します */
}
 
module.exports = nextConfig

ECMAScriptモジュール

next.config.jsは通常のNode.jsモジュールで、JSONファイルではありません。Next.jsサーバーとビルドフェーズで使用され、ブラウザビルドには含まれません。

ECMAScriptモジュールが必要な場合は、next.config.mjsを使用できます。

next.config.mjs
// @ts-check
 
/**
 * @type {import('next').NextConfig}
 */
const nextConfig = {
  /* ここに設定オプションを記述します */
}
 
export default nextConfig

補足.cjs.cts、または.mts拡張子を持つnext.configは現在サポートされていません

関数としての設定

関数を使用することもできます。

next.config.mjs
// @ts-check
 
export default (phase, { defaultConfig }) => {
  /**
   * @type {import('next').NextConfig}
   */
  const nextConfig = {
    /* ここに設定オプションを記述します */
  }
  return nextConfig
}

非同期設定

Next.js 12.1.0以降、async関数を使用できます。

next.config.js
// @ts-check
 
module.exports = async (phase, { defaultConfig }) => {
  /**
   * @type {import('next').NextConfig}
   */
  const nextConfig = {
    /* ここに設定オプションを記述します */
  }
  return nextConfig
}

Phase

phaseは設定が読み込まれる現在のコンテキストです。利用可能なphaseを確認できます。Phaseはnext/constantsからインポートできます。

next.config.js
// @ts-check
 
const { PHASE_DEVELOPMENT_SERVER } = require('next/constants')
 
module.exports = (phase, { defaultConfig }) => {
  if (phase === PHASE_DEVELOPMENT_SERVER) {
    return {
      /* 開発環境のみの設定オプションをここに記述します */
    }
  }
 
  return {
    /* 開発環境以外のすべてのphaseの設定オプションをここに記述します */
  }
}

TypeScript

プロジェクトでTypeScriptを使用している場合、設定でTypeScriptを使用するためにnext.config.tsを使用できます。

next.config.ts
import type { NextConfig } from 'next'
 
const nextConfig: NextConfig = {
  /* ここに設定オプションを記述します */
}
 
export default nextConfig

コメント行はnext.config.jsで許可されている設定を配置できる場所で、これはこのファイルで定義されているものです。

ただし、どの設定も必須ではなく、各設定が何をするかを理解する必要はありません。代わりに、このセクションで有効にしたり変更したりする必要のある機能を検索すれば、実行方法が表示されます。

ターゲットNode.jsバージョンで利用できない新しいJavaScript機能の使用を避けてください。next.config.jsはWebpackやBabelでパースされません。

このページは利用可能なすべての設定オプションをドキュメント化しています。

ユニットテスト(実験的)

Next.js 15.1から、next/experimental/testing/serverパッケージにはnext.config.jsファイルをユニットテストするのに役立つユーティリティが含まれています。

unstable_getResponseFromNextConfig関数は提供されたリクエスト情報でnext.config.jsからheadersredirects、およびrewrites関数を実行し、ルーティングの結果を含むNextResponseを返します。

unstable_getResponseFromNextConfigからのレスポンスはnext.config.jsフィールドのみを考慮し、プロキシまたはファイルシステムルートを考慮しないため、本番環境の結果はユニットテストと異なる場合があります。

import {
  getRedirectUrl,
  unstable_getResponseFromNextConfig,
} from 'next/experimental/testing/server'
 
const response = await unstable_getResponseFromNextConfig({
  url: 'https://nextjs.org/test',
  nextConfig: {
    async redirects() {
      return [{ source: '/test', destination: '/test2', permanent: false }]
    },
  },
})
expect(response.status).toEqual(307)
expect(getRedirectUrl(response)).toEqual('https://nextjs.org/test2')

experimental.adapterPath

Next.jsのビルドプロセスにフックするためのカスタムアダプターを設定します。modifyConfigおよびonBuildCompleteコールバックをサポートします。

allowedDevOrigins

`allowedDevOrigins` を使用して、開発サーバーにリクエストできる追加のオリジンを設定します。

appDir

App Routerを有効化して、レイアウト、ストリーミング、その他の機能を使用できるようにします。

assetPrefix

assetPrefixの設定オプションを使用してCDNを構成する方法について学びます。

authInterrupts

実験的な`authInterrupts`設定オプションを有効にして`forbidden`と`unauthorized`を使用する方法について学びます。

basePath

ドメインのサブパス下にNext.jsアプリケーションをデプロイするために`basePath`を使用します。

browserDebugInfoInTerminal

開発中にブラウザのコンソールログとエラーをターミナルに転送します。

cacheComponents

Next.jsで cacheComponents フラグを有効にする方法を学びます。

cacheLife

Next.jsでcacheLife設定を行う方法について学習します。

compress

Next.jsはレンダリングされたコンテンツと静的ファイルを圧縮するためのgzip圧縮を提供します。これはサーバーターゲットでのみ機能します。詳細はこちらをご覧ください。

crossOrigin

next/script で生成される`script`タグに`crossOrigin`オプションを追加します。

CSSチャンキング

Next.jsアプリケーションでCSSファイルのチャンキング方法を制御するには、`cssChunking`オプションを使用します。

devIndicators

開発中に表示される、現在のルートに関するコンテキスト情報を提供する画面上のインジケーターの設定オプション。

distDir

デフォルトの .next ディレクトリの代わりにカスタムビルドディレクトリを設定します。

env

Next.jsアプリケーションのビルド時に環境変数を追加およびアクセスする方法を学びます。

expireTime

ISRが有効なページのstale-while-revalidate期限をカスタマイズします。

exportPathMap

next export を使用する際に、HTML ファイルとしてエクスポートするページをカスタマイズします。

generateBuildId

アプリケーションが提供される現在のビルドを識別するために使用されるビルドIDを設定します。

generateEtags

Next.jsはデフォルトでページごとにETagを生成します。ETag生成を無効にする方法について詳しく学びます。

headers

Next.jsアプリにカスタムHTTPヘッダーを追加します。

htmlLimitedBots

ブロッキングメタデータを受け取るべきユーザーエージェントのリストを指定します。

httpAgentOptions

Next.jsはデフォルトで自動的にHTTP Keep-Aliveを使用します。HTTP Keep-Aliveを無効にする方法についてこちらで詳しく学びます。

images

next/image ローダーのカスタム設定

cacheHandler

Redis、Memcached、またはその他の外部サービスを使用するようにNext.jsキャッシュを設定し、データの保存と再検証を行います。

inlineCss

インラインCSS対応を有効にします。

isolatedDevBuild

開発サーバーの分離されたビルド出力を使用して、本番環境のビルドとの競合を防止します。

logging

Next.jsを開発モードで実行する際のデータフェッチのコンソールログ設定方法。

mdxRs

App Routerで新しいRustコンパイラを使用してMDXファイルをコンパイルします。

onDemandEntries

開発環境でNext.jsがページの破棄とメモリ保持をどのように設定するかを構成します。

optimizePackageImports

Next.js 設定オプション optimizePackageImports の API リファレンス

output

Next.jsはビルド時に各ページと依存関係を自動的にトレースして、アプリケーションのプロダクション版のデプロイに必要なファイルを特定します。詳細はこちらをご覧ください。

pageExtensions

Pages Router で Next.js がページを解決する際に使用するデフォルトのページ拡張子を拡張します。

poweredByHeader

Next.jsはデフォルトで`x-powered-by`ヘッダーを追加します。ここでオプトアウトする方法を学びます。

productionBrowserSourceMaps

本番ビルド時にブラウザソースマップの生成を有効にします。

proxyClientMaxBodySize

proxyを使用する際の最大リクエストボディサイズを設定します。

reactCompiler

React Compilerを有効にして、コンポーネントのレンダリングを自動的に最適化します。

reactMaxHeadersLength

Reactによって送出され、レスポンスに追加されるヘッダーの最大長。

reactStrictMode

完全な Next.js ランタイムが現在 Strict Mode に準拠、オプトインする方法を学ぶ

redirects

Next.jsアプリにリダイレクトを追加します。

rewrites

Next.jsアプリにrewritesを追加します。

sassOptions

Sass コンパイラーのオプションを設定します。

サーバーアクション

Next.js アプリケーションでのサーバーアクションの動作を設定します。

サーバーコンポーネントのHMRキャッシュ

Server Componentsでのfetchレスポンスをホットモジュール更新リクエスト間でキャッシュするかどうかを設定します。

serverExternalPackages

Server Componentsのバンドルから特定の依存関係をオプトアウトし、ネイティブなNode.jsの`require`を使用します。

staleTimes

クライアントサイドルーターキャッシュの無効化時間をオーバーライドする方法を学びます。

staticGeneration*

Next.jsアプリケーションでスタティック生成を設定する方法を学びます。

taint

オブジェクトと値のタイント化を有効にします。

trailingSlash

Next.jsのページが末尾のスラッシュありまたはなしで解決されるように設定する。

transpilePackages

ローカルパッケージ(モノリポなど)や外部依存関係(`node_modules`)からの依存関係を自動的にトランスパイルおよびバンドルします。

turbopack

Next.jsをTurbopack固有のオプションで設定します

turbopackFileSystemCache

Turbopack ビルドの FileSystem キャッシングを有効化する方法を学習します

typedRoutes

静的型付きリンクのサポートを有効化します。

typescript

Next.jsはデフォルトでTypeScriptエラーを報告します。この動作をオプトアウトする方法をここで学びます。

URLインポート

外部URLからモジュールをインポートするようにNext.jsを設定します。

useLightningcss

Lightning CSSの実験的サポートを有効化します。

viewTransition

App Routerで React の ViewTransition API を有効にする

webVitalsAttribution

Web Vitalsの問題の原因を特定する方法について説明します。

webpack

Next.js で使用される webpack 設定をカスタマイズする方法を学びます