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

next.config.js オプション

Next.jsは、プロジェクトディレクトリのルート(例えば、`package.json`の隣)にある`next.config.js`ファイルを、デフォルトエクスポートとして使用して設定できます。

next.config.js
// @ts-check
 
/** @type {import('next').NextConfig} */
const nextConfig = {
  /* config options here */
}
 
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 = {
  /* 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`から`headers``redirects`、および`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')

allowedDevOrigins

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

assetPrefix

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

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アプリケーションで環境変数を追加し、アクセスする方法を学びます。

eslint

Next.jsは、デフォルトでビルド中にESLintのエラーと警告を報告します。この動作をオプトアウトする方法をここで学びます。

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ローダーのカスタム設定

onDemandEntries

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

optimizePackageImports

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

output

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

pageExtensions

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

poweredByHeader

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

productionBrowserSourceMaps

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

reactStrictMode

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

redirects

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

rewrites

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

ランタイム設定

Next.jsアプリにクライアントとサーバーのランタイム設定を追加します。

serverExternalPackages

`bundlePagesRouterDependencies`によって有効にされた依存関係バンドルから特定の依存関係をオプトアウトします。

trailingSlash

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

transpilePackages

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

turbo

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

typescript

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

urlImports

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

useLightningcss

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

webpack

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

webVitalsAttribution

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