next.config.js 选项
Next.js 可以通过项目根目录(例如,与 package.json 同级)中的 next.config.js 文件进行配置,该文件有一个默认导出。
// @ts-check
/** @type {import('next').NextConfig} */
const nextConfig = {
/* config options here */
}
module.exports = nextConfigECMAScript 模块
next.config.js 是一个普通的 Node.js 模块,而不是 JSON 文件。它被 Next.js 服务器和构建阶段使用,不包含在浏览器构建中。
如果您需要ECMAScript 模块,可以使用 next.config.mjs。
// @ts-check
/**
* @type {import('next').NextConfig}
*/
const nextConfig = {
/* config options here */
}
export default nextConfig需要了解:目前不支持带有
.cjs、.cts或.mts扩展名的next.config。
作为函数的配置
您也可以使用函数。
// @ts-check
export default (phase, { defaultConfig }) => {
/**
* @type {import('next').NextConfig}
*/
const nextConfig = {
/* config options here */
}
return nextConfig
}异步配置
从 Next.js 12.1.0 开始,您可以使用异步函数。
// @ts-check
module.exports = async (phase, { defaultConfig }) => {
/**
* @type {import('next').NextConfig}
*/
const nextConfig = {
/* config options here */
}
return nextConfig
}阶段
phase 是加载配置的当前上下文。您可以在此处查看可用的阶段。阶段可以从 next/constants 中导入。
// @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,可以使用 next.config.ts 在配置中使用 TypeScript。
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.net.cn/test',
nextConfig: {
async redirects() {
return [{ source: '/test', destination: '/test2', permanent: false }]
},
},
})
expect(response.status).toEqual(307)
expect(getRedirectUrl(response)).toEqual('https://nextjs.net.cn/test2')experimental.adapterPath
allowedDevOrigins
assetPrefix
basePath
bundlePagesRouterDependencies
compress
crossOrigin
devIndicators
distDir
env
exportPathMap
generateBuildId
generateEtags
headers
httpAgentOptions
images
isolatedDevBuild
onDemandEntries
optimizePackageImports
output
pageExtensions
poweredByHeader
productionBrowserSourceMaps
experimental.proxyClientMaxBodySize
reactStrictMode
redirects
rewrites
serverExternalPackages
trailingSlash
transpilePackages
turbopack
typescript
urlImports
useLightningcss
webpack
webVitalsAttribution
这有帮助吗?