next.config.js オプション

Next.jsは、プロジェクトディレクトリのルート(例えばpackage.jsonと同じ階層)にあるnext.config.jsファイルを通じて設定できます。

next.config.js
/** @type {import('next').NextConfig} */
const nextConfig = {
  /* ここに設定オプションを記述 */
}

module.exports = nextConfig

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

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

next.config.mjs
/**
 * @type {import('next').NextConfig}
 */
const nextConfig = {
  /* ここに設定オプションを記述 */
}

export default nextConfig

関数を使用することも可能です:

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

Next.js 12.1.0以降では、非同期関数も使用できます:

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

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

const { PHASE_DEVELOPMENT_SERVER } = require('next/constants')

module.exports = (phase, { defaultConfig }) => {
  if (phase === PHASE_DEVELOPMENT_SERVER) {
    return {
      /* 開発サーバー専用の設定オプションをここに記述 */
    }
  }

  return {
    /* 開発フェーズ以外の全フェーズ用の設定オプションをここに記述 */
  }
}

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

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

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

このページでは、利用可能なすべての設定オプションを解説しています:

appDir

レイアウト、ストリーミングなどの機能を利用するためにApp Routerを有効化します。

assetPrefix

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

basePath

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

圧縮 (compress)

Next.js はレンダリングされたコンテンツと静的ファイルの圧縮に gzip を提供します。この機能はサーバーターゲットでのみ動作します。詳細について学びましょう。

devIndicators

最適化されたページには静的最適化が適用されていることを示すインジケーターが表示されます。ここではその無効化方法を説明します。

distDir

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

環境変数

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

ESLint

Next.js はデフォルトでビルド時にESLintのエラーと警告を報告します。この動作を無効にする方法について学びましょう。

exportPathMap

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

generateBuildId

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

generateEtags

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

ヘッダー

Next.jsアプリケーションにカスタムHTTPヘッダーを追加する方法

httpAgentOptions

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

画像

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

incrementalCacheHandlerPath

Next.js キャッシュの設定。データの保存と再検証に使用されます。

mdxRs

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

onDemandEntries

Next.js が開発環境で作成したページをメモリ上で保持または破棄する方法を設定します。

optimizePackageImports

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

output

Next.js は各ページで必要なファイルを自動的にトレースし、アプリケーションのデプロイを容易にします。その仕組みについて学びましょう。

pageExtensions

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

poweredByHeader

Next.js はデフォルトで `x-powered-by` ヘッダーを追加します。このヘッダーを無効化する方法について学びます。

productionBrowserSourceMaps

プロダクションビルド時にブラウザ用ソースマップの生成を有効化します。

reactStrictMode

Next.jsランタイムはStrict Modeに完全対応しました。有効化する方法を学びましょう

リダイレクト

Next.jsアプリケーションにリダイレクトを追加する方法

リライト

Next.jsアプリケーションにリライトを追加する方法

serverComponentsExternalPackages

特定の依存関係をサーバーコンポーネントのバンドリングから除外し、ネイティブなNode.jsの `require` を使用します。

trailingSlash

Next.js ページのURL末尾スラッシュの有無を設定します。

transpilePackages

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

turbo

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

typedRoutes

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

TypeScript

Next.js はデフォルトで TypeScript エラーを報告します。この動作を無効にする方法について学びましょう。

URLインポート

Next.jsで外部URLからのモジュールインポートを許可する設定方法(実験的機能)。

webpack

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

webVitalsAttribution

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