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およびbuildCompleteコールバックでビルドプロセスにフックします。

allowedDevOrigins

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

assetPrefix

CDNを設定するためのassetPrefixコンフィグオプションの使用方法を学びます。

basePath

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

bundlePagesRouterDependencies

Pages Routerの自動依存関係バンドルを有効化

compress

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

crossOrigin

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

devIndicators

最適化されたページには、静的に最適化されているかどうかを示すインジケーターが含まれます。ここでオプトアウトできます。

distDir

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

env

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

exportPathMap

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

generateBuildId

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

generateEtags

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

headers

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

httpAgentOptions

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

images

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

isolatedDevBuild

開発ビルドに独立したディレクトリを使用して、本番ビルドとの競合を防ぎます。

onDemandEntries

開発中に作成されたページをメモリに保持し、破棄する方法を設定します。

optimizePackageImports

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

output

Next.jsは、アプリケーションの簡単なデプロイを可能にするために、各ページに必要なファイルを自動的に追跡します。その仕組みについてここで学びましょう。

pageExtensions

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

poweredByHeader

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

productionBrowserSourceMaps

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

experimental.proxyClientMaxBodySize

Configure the maximum request body size when using proxy.

reactStrictMode

Next.js ランタイム全体が現在 Strict Mode に準拠しています。オプトインする方法を学びましょう

リダイレクト

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

リライト

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

serverExternalPackages

`bundlePagesRouterDependencies`で有効になっている依存関係のバンドルから、特定の依存関係をオプトアウトします。

trailingSlash

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

transpilePackages

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

turbopack

Turbopack固有のオプションを使用してNext.jsを設定する

typescript

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

urlImports

外部URLからモジュールをインポートするための Next.js の設定

useLightningcss

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

webVitalsAttribution

Web Vitalsの問題の発生源を特定するためのwebVitalsAttribution オプションの使用方法を学びます。

webpack

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