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 canary 版本中可用。

如果你在项目中使用 TypeScript,你可以使用 next.config.ts 在配置中使用 TypeScript:

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。

基本路径

使用 `basePath` 在域的子路径下部署 Next.js 应用程序。

bundlePagesRouterDependencies

为页面路由器启用自动依赖打包

压缩

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 生成。

标头

为你的 Next.js 应用添加自定义 HTTP 标头。

httpAgentOptions

Next.js 默认会自动使用 HTTP 保持连接。在此了解如何禁用 HTTP 保持连接。

图像

next/image 加载器的自定义配置

onDemandEntries

配置 Next.js 在开发环境中如何处置和保留内存中的页面。

optimizePackageImports

Next.js 配置选项 optimizePackageImports 的 API 参考

输出

Next.js 自动跟踪每个页面所需的文件,以便轻松部署你的应用程序。在此了解其工作原理。

pageExtensions

在页面路由器中解析页面时,扩展 Next.js 使用的默认页面扩展名。

poweredByHeader

Next.js 默认会添加 `x-powered-by` 头部。在此了解如何选择退出。

productionBrowserSourceMaps

在生产构建期间启用浏览器源代码映射生成。

reactStrictMode

现在完整的 Next.js 运行时已经符合严格模式,了解如何选择加入

重定向

为你的 Next.js 应用添加重定向。

重写规则

为你的 Next.js 应用添加重写规则。

运行时配置

为你的 Next.js 应用添加客户端和服务器运行时配置。

serverExternalPackages

从 `bundlePagesRouterDependencies` 启用的依赖捆绑中选择退出特定依赖。

尾部斜杠

配置 Next.js 页面是否以斜杠结尾。

transpilePackages

自动转译和打包来自本地包(如单一仓库)或外部依赖(`node_modules`)的依赖。

turbo

使用 Turbopack 特定选项配置 Next.js

TypeScript

默认情况下,Next.js 会报告 TypeScript 错误。在此处了解如何选择退出此行为。

urlImports

配置 Next.js 以允许从外部 URL 导入模块。

useLightningcss

启用 Lightning CSS 的实验性支持。

webVitalsAttribution

了解如何使用 webVitalsAttribution 选项来定位 Web Vitals 问题的源头。

webpack

了解如何自定义 Next.js 使用的 webpack 配置