为了自定义Next.js 的高级配置,你能够创建next.config.js或者next.config.mjs文件到项目根目录下(package.json旁边)

    next.config.js是一个普通的Node.js 模块,不是JSON 文件,它能够被Next.js 服务器以及构建阶段进行使用,它不会包括在任何浏览器构建中 ..

    首先查看一下next.config.js示例

    1. /**
    2. * @type {import('next').NextConfig}
    3. */
    4. const nextConfig = {
    5. /* config options here */
    6. }
    7. module.exports = nextConfig

    如果你需要ECMAScript modules,你需要使用next.config.mjs

    1. /**
    2. * @type {import('next').NextConfig}
    3. */
    4. const nextConfig = {
    5. /* config options here */
    6. }
    7. export default nextConfig

    你也能够使用一个函数 …

    1. module.exports = (phase, { defaultConfig }) => {
    2. /**
    3. * @type {import('next').NextConfig}
    4. */
    5. const nextConfig = {
    6. /* config options here */
    7. }
    8. return nextConfig
    9. }

    自从 Next.js 12.1.0开始,你能够使用一个异步函数 ..

    1. module.exports = async (phase, { defaultConfig }) => {
    2. /**
    3. * @type {import('next').NextConfig}
    4. */
    5. const nextConfig = {
    6. /* config options here */
    7. }
    8. return nextConfig
    9. }

    phase是被加载的配置的上下文,你能够查看必要的阶段,阶段能够从next/constants中导入 ..

    1. const { PHASE_DEVELOPMENT_SERVER } = require('next/constants')
    2. module.exports = (phase, { defaultConfig }) => {
    3. if (phase === PHASE_DEVELOPMENT_SERVER) {
    4. return {
    5. /* development only config options here */
    6. }
    7. }
    8. return {
    9. /* config options for all phases except development here */
    10. }
    11. }

    放置在这里的注释行能够放置一些由next.config.js允许的配置,它们由defined in this file ..

    也就是说开发阶段配置那些东西 … 条件配置 .. 然而并不是所有的配置都是需要的,并且没必要理解那些每一个配置干了什么 .. 相反查询你想需要启动的特性并修改这个部分然后等待它们为你展示你想要做的事情 .. 避免使用新的js 特性(但是在目标Node.js 版本中不支持),<font style="color:rgb(17, 17, 17);">next.config.js</font>将不会被Webpack,Babel,TypeScript解析 …