next.config.js 設定選項

Next.js 可以透過在專案根目錄(例如與 package.json 同層)中的 next.config.js 檔案進行設定,並使用預設導出。

next.config.js
// @ts-check

/** @type {import('next').NextConfig} */
const nextConfig = {
  /* 在此處填入設定選項 */
}

module.exports = nextConfig

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

您也可以使用函式形式:

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 匯入:

// @ts-check

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 以使用佈局 (layouts)、串流 (streaming) 等功能。

assetPrefix

了解如何使用 assetPrefix 配置選項來設定您的 CDN。

basePath

使用 `basePath` 將 Next.js 應用程式部署在網域的子路徑下。

compress

Next.js 提供 gzip 壓縮功能來壓縮渲染內容與靜態檔案,此功能僅適用於伺服器目標。進一步了解相關資訊。

crossOrigin

使用 `crossOrigin` 選項可在 `next/script` 生成的 `script` 標籤上添加 crossOrigin 屬性。

devIndicators

最佳化的頁面會包含一個指示器,讓您知道該頁面是否正在進行靜態最佳化。您可以在此選擇停用此功能。

distDir

設定自訂建置目錄以取代預設的 .next 目錄。

env

了解如何在建置時於 Next.js 應用程式中新增與存取環境變數。

eslint

Next.js 預設會在構建時報告 ESLint 錯誤和警告。本文將介紹如何停用此行為。

exportPathMap

自訂在使用 `next export` 時會被匯出為 HTML 檔案的頁面。

generateBuildId

設定建置 ID,該 ID 用於識別當前提供服務的應用程式建置版本。

generateEtags

Next.js 預設會為每個頁面生成 etags。進一步了解如何在此停用 etag 生成功能。

headers

在您的 Next.js 應用程式中添加自訂 HTTP 標頭。

httpAgentOptions

Next.js 預設會自動使用 HTTP Keep-Alive。在此深入了解如何停用 HTTP Keep-Alive。

圖片設定

關於 next/image 載入器的自訂配置

cacheHandler

設定 Next.js 用於儲存和重新驗證資料的快取,以使用任何外部服務如 Redis、Memcached 或其他服務。

instrumentationHook

使用 instrumentationHook 選項在您的 Next.js 應用程式中設定儀器化功能。

日誌記錄 (logging)

設定在開發模式下執行 Next.js 時,如何將資料獲取記錄到控制台。

mdxRs

使用新的 Rust 編譯器來編譯 App Router 中的 MDX 檔案。

onDemandEntries

設定 Next.js 在開發環境中如何釋放及保留記憶體中的頁面。

optimizePackageImports

關於 Next.js 設定選項 `optimizePackageImports` 的 API 參考文件

output

Next.js 會自動追蹤每個頁面所需的檔案,以便輕鬆部署應用程式。在此了解其運作原理。

pageExtensions

擴展 Next.js 在解析頁面路由 (Pages Router) 時使用的預設頁面副檔名。

部分預渲染 (Partial Prerendering) (實驗性功能)

了解如何在 Next.js 14 中啟用部分預渲染 (Partial Prerendering) 實驗性功能。

poweredByHeader

Next.js 預設會加入 `x-powered-by` 標頭。在此了解如何選擇停用此功能。

productionBrowserSourceMaps

在生产版本中启用浏览器原始碼映射 (source map) 生成功能。

reactStrictMode

Next.js 完整運行時環境現已相容嚴格模式 (Strict Mode),了解如何啟用此功能

重新導向

在您的 Next.js 應用程式中新增重新導向功能。

rewrites

為您的 Next.js 應用程式新增 rewrites 功能。

serverActions

設定 Next.js 應用程式中的伺服器動作 (Server Actions) 行為。

serverComponentsExternalPackages

將特定依賴項排除於伺服器元件 (Server Components) 打包流程外,並使用原生 Node.js 的 `require`。

StaleTimes (實驗性功能)

了解如何覆寫客戶端路由快取 (Client Router Cache) 的失效時間。

trailingSlash

設定 Next.js 頁面解析時是否包含尾部斜線。

transpilePackages

自動轉譯並打包來自本地套件 (如 monorepos) 或外部依賴 (`node_modules`) 的相依套件。

turbo

設定 Next.js 的 Turbopack 專用選項

typedRoutes

啟用靜態類型連結的實驗性支援功能。

TypeScript

Next.js 預設會回報 TypeScript 錯誤。本文將介紹如何停用此行為。

urlImports

設定 Next.js 以允許從外部 URL 導入模組 (實驗性功能)。

webpack

瞭解如何自訂 Next.js 使用的 webpack 設定

webVitalsAttribution

了解如何使用 webVitalsAttribution 選項來追蹤 Web Vitals 問題的來源。