コンテンツにスキップ

next.config.js

Next.js は、プロジェクトディレクトリのルートにある next.config.js ファイルから、デフォルトエクスポートで設定できます。(例:package.json の横)

next.config.js
// @ts-check
 
/** @type {import('next').NextConfig} */
const nextConfig = {
  /* config options here */
}
 
module.exports = nextConfig

ECMAScript Modules

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

もし ECMAScript modules が必要な場合は、next.config.mjs を使用できます。

next.config.mjs
// @ts-check
 
/**
 * @type {import('next').NextConfig}
 */
const nextConfig = {
  /* config options here */
}
 
export default nextConfig

知っておくと良いこと: .cjs.cts、または .mts 拡張子を持つ next.config は、現在サポートされていません

関数としての設定

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

next.config.mjs
// @ts-check
 
export default (phase, { defaultConfig }) => {
  /**
   * @type {import('next').NextConfig}
   */
  const nextConfig = {
    /* config options here */
  }
  return nextConfig
}

非同期設定

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

next.config.js
// @ts-check
 
module.exports = async (phase, { defaultConfig }) => {
  /**
   * @type {import('next').NextConfig}
   */
  const nextConfig = {
    /* config options here */
  }
  return nextConfig
}

フェーズ

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 {
      /* development only config options here */
    }
  }
 
  return {
    /* config options for all phases except development here */
  }
}

TypeScript

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

next.config.ts
import type { NextConfig } from 'next'
 
const nextConfig: NextConfig = {
  /* config options here */
}
 
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 から headersredirectsrewrites 関数を実行し、ルーティングの結果を含む NextResponse を返します。

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

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

experimental.adapterPath

ビルドプロセスにフックするためのカスタムアダプターを設定し、modifyConfigとonBuildCompleteコールバックを使用します。

allowedDevOrigins

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

appDir

App Routerを有効にして、レイアウト、ストリーミングなどを使用します。

assetPrefix

CDNを設定するためにassetPrefix設定オプションを使用する方法を学びます。

authInterrupts

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

basePath

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

browserDebugInfoInTerminal

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

cacheComponents

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

cacheLife

Next.jsでcacheLife設定をセットアップする方法を学びます。

compress

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

crossOrigin

`next/script`によって生成される`script`タグに`crossOrigin`タグを追加するには、`crossOrigin`オプションを使用します。

cssChunking

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でMDXファイルをコンパイルするために、新しいRustコンパイラを使用します。

onDemandEntries

開発中に作成されたページをNext.jsがどのように破棄し、メモリに保持するかを設定します。

optimizePackageImports

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

output

Next.jsは、各ページに必要なファイルを自動的にトレースして、アプリケーションを簡単にデプロイできるようにします。仕組みについてはこちらをご覧ください。

pageExtensions

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

poweredByHeader

Next.jsはデフォルトで`x-powered-by`ヘッダーを追加します。この動作をオプトアウトする方法についてはこちらをご覧ください。

productionBrowserSourceMaps

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

proxyClientMaxBodySize

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

reactCompiler

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

reactMaxHeadersLength

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

reactStrictMode

完全なNext.jsランタイムがStrict Modeに準拠しました。オプトイン方法はこちらで学んでください。

redirects

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

rewrites

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

sassOptions

Sassオプションを設定します。

serverActions

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

serverComponentsHmrCache

Server ComponentsでのfetchレスポンスがHMRリフレッシュリクエスト間でキャッシュされるかどうかを設定します。

serverExternalPackages

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

staleTimes

Client Router Cacheの無効化時間をオーバーライドする方法を学びます。

staticGeneration*

Next.jsアプリケーションでの静的生成の設定方法を学びます。

taint

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

trailingSlash

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

transpilePackages

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

turbopack

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

turbopackFileSystemCache

TurbopackビルドでFileSystem Cachingを有効にする方法を学びます。

typedRoutes

静的に型付けされたリンクのサポートを有効にします。

typescript

Next.jsはデフォルトでTypeScriptエラーを報告します。この動作をオプトアウトする方法についてはこちらをご覧ください。

urlImports

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

useLightningcss

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

viewTransition

App RouterでReactのViewTransition APIを有効にします。

webpack

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

webVitalsAttribution

Web Vitalsの問題のソースを特定するために、webVitalsAttributionオプションを使用する方法を学びます。