コンテンツにスキップ
APIリファレンス設定next.config.js オプション

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 は通常の Node.js モジュールであり、JSON ファイルではありません。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 を使用している場合、next.config.ts を使用して設定で TypeScript を使用できます。

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 からの 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.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 および buildComplete コールバックを使用してビルドプロセスにフックするためのカスタムアダプターを Next.js に設定します。

allowedDevOrigins

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

assetPrefix

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

basePath

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

bundlePagesRouterDependencies

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

compress

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

crossOrigin

`crossOrigin` オプションを使用して、`next/script` および `next/head` によって生成された `script` タグに 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

開発中に作成されたページの破棄とメモリ内保持の方法を Next.js で設定します。

optimizePackageImports

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

output

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

pageExtensions

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

poweredByHeader

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

productionBrowserSourceMaps

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

experimental.proxyClientMaxBodySize

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

reactStrictMode

完全な Next.js ランタイムが Strict Mode に準拠するようになりました。オプトイン方法はこちらをご覧ください。

redirects

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

rewrites

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

serverExternalPackages

`bundlePagesRouterDependencies` によって有効化される依存関係バンドルから特定の依存関係を除外します。

trailingSlash

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

transpilePackages

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

turbopack

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

typescript

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

urlImports

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

useLightningcss

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

webpack

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

webVitalsAttribution

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