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 以降、非同期関数を使用できます:

next.config.js
// @ts-check
 
module.exports = async (phase, { defaultConfig }) => {
  /**
   * @type {import('next').NextConfig}
   */
  const nextConfig = {
    /* 設定オプションをここに記述 */
  }
  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 {
      /* 開発環境のみの設定オプションをここに記述 */
    }
  }
 
  return {
    /* 開発環境以外のすべてのフェーズの設定オプションをここに記述 */
  }
}

TypeScript

この機能は Next.js カナリー版から利用可能です。

プロジェクトで 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 によって解析されません。

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

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アプリケーションでビルド時に環境変数を追加およびアクセスする方法を学びます。

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

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

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 アプリにリライトを追加する。

ランタイム設定

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

serverExternalPackages

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

trailingSlash

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

transpilePackages

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

turbo

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

typescript

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

urlImports

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

useLightningcss

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

webVitalsAttribution

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

webpack

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