Nuxt 配置

了解您可以在 nuxt.config.ts 文件中使用的所有选项。

alias

您可以通过定义额外的别名来访问 JavaScript 和 CSS 中的自定义目录,从而改善您的开发体验 (DX)。

  • 类型object
  • 默认
{
  "~": "/<srcDir>",
  "@": "/<srcDir>",
  "~~": "/<rootDir>",
  "@@": "/<rootDir>",
  "#shared": "/<rootDir>/shared",
  "assets": "/<srcDir>/assets",
  "public": "/<rootDir>/public",
  "#build": "/<rootDir>/.nuxt",
  "#internal/nuxt/paths": "/<rootDir>/.nuxt/paths.mjs"
}
注意:在 webpack 上下文(图像源、CSS - 但不是 JavaScript)中,您必须通过在别名前加上 ~ 来访问它。
注意:这些别名将自动添加到生成的 TypeScript 配置 (.nuxt/tsconfig.app.json.nuxt/tsconfig.server.json 等) 中,以便您获得完整的类型支持和路径自动补全。如果您需要进一步扩展生成的配置提供的选项,请确保将它们添加到此处或 nuxt.config 中的 typescript.tsConfig 属性中。

示例:

import { fileURLToPath } from 'node:url'

export default defineNuxtConfig({
  alias: {
    'images': fileURLToPath(new URL('./assets/images', import.meta.url)),
    'style': fileURLToPath(new URL('./assets/style', import.meta.url)),
    'data': fileURLToPath(new URL('./assets/other/data', import.meta.url)),
  },
})
<template>
  <img src="~images/main-bg.jpg">
</template>

<script>
import data from 'data/test.json'
</script>

<style>
// Uncomment the below
//@import '~style/variables.scss';
//@import '~style/utils.scss';
//@import '~style/base.scss';
body {
  background-image: url('~images/main-bg.jpg');
}
</style>

analyzeDir

当运行 nuxt analyze 时,Nuxt 存储生成文件的目录。

如果指定相对路径,它将相对于您的 rootDir

  • 类型: string
  • 默认值: "/<rootDir>/.nuxt/analyze"

app

Nuxt 应用程序配置。

baseURL

Nuxt 应用程序的基本路径。

例如

  • 类型: string
  • 默认值: "/"

示例:

export default defineNuxtConfig({
  app: {
    baseURL: '/prefix/',
  },
})

这也可以通过设置 NUXT_APP_BASE_URL 环境变量在运行时进行设置。

示例:

NUXT_APP_BASE_URL=/prefix/ node .output/server/index.mjs

buildAssetsDir

构建站点资产的文件夹名称,相对于 baseURL(如果设置,则为 cdnURL)。这在构建时设置,不应在运行时自定义。

  • 类型: string
  • 默认值: "/_nuxt/"

cdnURL

用于从公共文件夹提供服务的绝对 URL(仅限生产环境)。

例如

  • 类型: string
  • 默认值: ""

示例:

export default defineNuxtConfig({
  app: {
    cdnURL: 'https://mycdn.org/',
  },
})

这可以通过设置 NUXT_APP_CDN_URL 环境变量在运行时设置为不同的值。

示例:

NUXT_APP_CDN_URL=https://mycdn.org/ node .output/server/index.mjs

为每个页面的 <head> 设置默认配置。

  • 类型object
  • 默认
{
  "meta": [
    {
      "name": "viewport",
      "content": "width=device-width, initial-scale=1"
    },
    {
      "charset": "utf-8"
    }
  ],
  "link": [],
  "style": [],
  "script": [],
  "noscript": []
}

示例:

export default defineNuxtConfig({
  app: {
    head: {
      meta: [
      // <meta name="viewport" content="width=device-width, initial-scale=1">
        { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      ],
      script: [
      // <script src="https://myawesome-lib.js"></script>
        { src: 'https://awesome-lib.js' },
      ],
      link: [
      // <link rel="stylesheet" href="https://myawesome-lib.css">
        { rel: 'stylesheet', href: 'https://awesome-lib.css' },
      ],
      // please note that this is an area that is likely to change
      style: [
      // <style>:root { color: red }</style>
        { textContent: ':root { color: red }' },
      ],
      noscript: [
      // <noscript>JavaScript is required</noscript>
        { textContent: 'JavaScript is required' },
      ],
    },
  },
})

keepalive

页面之间 KeepAlive 配置的默认值。

这可以在单个页面上通过 definePageMeta 覆盖。只允许 JSON 序列化的值。

  • 类型boolean
  • 默认值: false

请参阅: Vue KeepAlive

layoutTransition

布局过渡的默认值。

这可以在单个页面上通过 definePageMeta 覆盖。只允许 JSON 序列化的值。

  • 类型boolean
  • 默认值: false

请参阅: Vue Transition 文档

pageTransition

页面过渡的默认值。

这可以在单个页面上通过 definePageMeta 覆盖。只允许 JSON 序列化的值。

  • 类型boolean
  • 默认值: false

请参阅: Vue Transition 文档

rootAttrs

自定义 Nuxt 根元素 id。

  • 类型object
  • 默认
{
  "id": "__nuxt"
}

rootId

自定义 Nuxt 根元素 id。

  • 类型: string
  • 默认值: "__nuxt"

rootTag

自定义 Nuxt 根元素标签。

  • 类型: string
  • 默认值: "div"

spaLoaderAttrs

自定义 Nuxt SPA 加载模板元素属性。

  • 类型object
  • 默认
{
"id": "__nuxt-loader"
}

ID

  • 类型: string
  • 默认值: "__nuxt-loader"

spaLoaderTag

自定义 Nuxt SpaLoader 元素标签。

  • 类型: string
  • 默认值: "div"

teleportAttrs

自定义 Nuxt Teleport 元素属性。

  • 类型object
  • 默认
{
  "id": "teleports"
}

teleportId

自定义 Nuxt Teleport 元素 id。

  • 类型: string
  • 默认值: "teleports"

teleportTag

自定义 Nuxt Teleport 元素标签。

  • 类型: string
  • 默认值: "div"

viewTransition

视图过渡的默认值。

这仅在 在您的 nuxt.config 文件中启用 实验性 视图过渡支持时才有效。这可以在单个页面上通过 definePageMeta 覆盖。

  • 类型boolean
  • 默认值: false

请参阅: Nuxt View Transition API 文档

appConfig

额外的应用程序配置

为了编程使用和类型支持,您可以直接通过此选项提供应用程序配置。它将与 app.config 文件合并作为默认值。

nuxt

appId

对于多应用程序项目,Nuxt 应用程序的唯一 ID。

默认为 nuxt-app

  • 类型: string
  • 默认值: "nuxt-app"

build

共享构建配置。

analyze

Nuxt 允许可视化您的捆绑包以及如何优化它们。

设置为 true 以启用捆绑分析,或传递一个带有选项的对象for webpackfor vite.

  • 类型object
  • 默认
{
  "template": "treemap",
  "projectRoot": "/<rootDir>",
  "filename": "/<rootDir>/.nuxt/analyze/{name}.html"
}

示例:

export default defineNuxtConfig({
  analyze: {
    analyzerMode: 'static',
  },
})

templates

建议使用 @nuxt/kit 中的 addTemplate 而不是此选项。

  • 类型array

示例:

export default defineNuxtConfig({
  build: {
    templates: [
      {
        src: '~/modules/support/plugin.js', // `src` can be absolute or relative
        dst: 'support.js', // `dst` is relative to project `.nuxt` dir
      },
    ],
  },
})

transpile

如果您想使用 Babel 转译特定的依赖项,可以在此处添加它们。`transpile` 中的每个项可以是包名、函数、字符串或匹配依赖项文件名的正则表达式对象。

您还可以使用函数进行条件转译。该函数将接收一个对象 ({ isDev, isServer, isClient, isModern, isLegacy })。

  • 类型array

示例:

export default defineNuxtConfig({
  build: {
    transpile: [({ isLegacy }) => isLegacy && 'ky'],
  },
})

buildDir

定义构建的 Nuxt 文件将放置的目录。

许多工具假定 .nuxt 是一个隐藏目录(因为它以 . 开头)。如果这是一个问题,您可以使用此选项来阻止它。

  • 类型: string
  • 默认值: "/<rootDir>/.nuxt"

示例:

export default defineNuxtConfig({
  buildDir: 'nuxt-build',
})

buildId

与构建匹配的唯一标识符。这可能包含项目当前状态的哈希值。

  • 类型: string
  • 默认值: "4a2e2d30-418f-41df-8e58-ed5df06de7fd"

builder

用于捆绑应用程序 Vue 部分的构建器。

Nuxt 支持客户端应用程序的多个构建器。默认情况下,使用 Vite,但您可以切换到 webpack、Rspack,甚至提供自定义构建器实现。

  • 类型'vite' | 'webpack' | 'rspack' | string | { bundle: (nuxt: Nuxt) => Promise<void> }
  • 默认值: "@nuxt/vite-builder"

使用支持的构建器

export default defineNuxtConfig({
  // default - uses @nuxt/vite-builder
  // builder: 'vite',

  // uses @nuxt/webpack-builder
  // builder: 'webpack',

  // uses @nuxt/rspack-builder
  builder: 'rspack',
})

如果您使用的是 webpackrspack,您需要确保在项目中显式安装 @nuxt/webpack-builder@nuxt/rspack-builder

使用自定义构建器对象

您可以通过传递一个带有 bundle 函数的对象来提供自定义构建器

export default defineNuxtConfig({
  builder: {
    async bundle (nuxt) {
      const entry = await resolvePath(resolve(nuxt.options.appDir, 'entry'))

      // Build client and server bundles
      await buildClient(nuxt, entry)
      if (nuxt.options.ssr) {
        await buildServer(nuxt, entry)
      }

      // ... it's a bit more complicated than that, of course!
    },
  },
})

创建自定义构建器包

要将自定义构建器创建为单独的包,它应该导出一个 bundle 函数。然后,您可以在 nuxt.config.ts 中指定包名。

export default defineNuxtConfig({
  builder: 'my-custom-builder',
})

compatibilityDate

指定您的应用程序的兼容性日期。

这用于控制 Nitro、Nuxt Image 和其他可能在没有主要版本更新的情况下改变行为的模块中的预设行为。我们计划将来改进此功能的工具。

components

配置 Nuxt 组件自动注册。

此处配置目录中的任何组件都可以在您的页面、布局(和其他组件)中直接使用,而无需显式导入它们。

  • 类型object
  • 默认
{
  "dirs": [
    {
      "path": "~/components/global",
      "global": true
    },
    "~/components"
  ]
}

请参阅: app/components/ 目录文档

css

您可以定义要全局设置(包含在每个页面中)的 CSS 文件/模块/库。

Nuxt 将根据文件扩展名自动猜测文件类型并使用适当的预处理器。如果您需要使用它们,您仍然需要安装所需的加载器。

  • 类型array

示例:

export default defineNuxtConfig({
  css: [
  // Load a Node.js module directly (here it's a Sass file).
    'bulma',
    // CSS file in the project
    '~/assets/css/main.css',
    // SCSS file in the project
    '~/assets/css/main.scss',
  ],
})

调试

设置为 true 以启用调试模式。

目前,它在服务器上打印出钩子名称和时间,并在浏览器中也记录钩子参数。您也可以将其设置为一个对象以启用特定的调试选项。

  • 类型boolean
  • 默认值: false

开发

Nuxt 是否在开发模式下运行。

通常,您不需要设置此项。

  • 类型boolean
  • 默认值: false

devServer

cors

为开发服务器设置 CORS 选项

origin

  • 类型array
  • 默认
[
  {}
]

host

开发服务器监听主机

https

是否启用 HTTPS。

  • 类型boolean
  • 默认值: false

示例:

export default defineNuxtConfig({
  devServer: {
    https: {
      key: './server.key',
      cert: './server.crt',
    },
  },
})

loadingTemplate

显示加载屏幕的模板

  • 类型function

port

开发服务器监听端口

  • 类型number
  • 默认值: 3000

url

监听开发服务器 URL。

不应直接设置此项,因为它总是会被开发服务器使用完整 URL 覆盖(用于模块和内部使用)。

  • 类型: string
  • 默认值: "https://:3000"

devServerHandlers

仅用于 Nitro 开发的服务器处理程序。

  • 类型array

请参阅: Nitro 服务器路由文档

devtools

启用 Nuxt DevTools 进行开发。

Devtools 的重大更改可能不会反映在 Nuxt 版本上。

请参阅: Nuxt DevTools获取更多信息。

dir

自定义 Nuxt 使用的默认目录结构。

除非有必要,否则最好坚持使用默认值。

app

  • 类型: string
  • 默认值: "app"

assets

assets 目录(在您的构建中别名为 ~assets)。

  • 类型: string
  • 默认值: "app/assets"

layouts

布局目录,其中每个文件都将自动注册为 Nuxt 布局。

  • 类型: string
  • 默认值: "app/layouts"

middleware

中间件目录,其中每个文件都将自动注册为 Nuxt 中间件。

  • 类型: string
  • 默认值: "app/middleware"

modules

模块目录,其中每个文件都将自动注册为 Nuxt 模块。

  • 类型: string
  • 默认值: "modules"

pages

将处理以自动生成应用程序页面路由的目录。

  • 类型: string
  • 默认值: "app/pages"

plugins

插件目录,其中每个文件都将自动注册为 Nuxt 插件。

  • 类型: string
  • 默认值: "app/plugins"

public

包含您的静态文件的目录,这些文件将通过 Nuxt 服务器直接访问,并在应用程序生成时复制到您的 dist 文件夹中。

  • 类型: string
  • 默认值: "public"

shared

共享目录。此目录在应用程序和服务器之间共享。

  • 类型: string
  • 默认值: "shared"

esbuild

options

配置 Nuxt 内部使用的共享 esbuild 选项,并传递给其他构建器,例如 Vite 或 webpack。

jsxFactory

  • 类型: string
  • 默认值: "h"

jsxFragment

  • 类型: string
  • 默认值: "Fragment"

target

  • 类型: string
  • 默认值: "esnext"

tsconfigRaw

  • 类型object

experimental

::read-more{to="/docs/4.x/guide/going-further/experimental-features"} 了解更多关于 Nuxt 的实验性功能。:

extends

从多个本地或远程源扩展项目。

值应为字符串或字符串数组,指向源目录或相对于当前配置的配置路径。您可以使用 github:gh:gitlab:bitbucket:

请参阅: c12 关于扩展配置层的文档

请参阅: giget 文档

extensions

Nuxt 解析器应该解析的扩展名。

  • 类型array
  • 默认
[
  ".js",
  ".jsx",
  ".mjs",
  ".ts",
  ".tsx",
  ".vue"
]

features

::read-more{to="/docs/4.x/guide/going-further/features#features"} 了解更多关于 Nuxt 的可选功能。:

future

::read-more{to="/docs/4.x/guide/going-further/features#features"} 了解如何选择在新版本(可能是主要版本)框架中成为默认值的新功能。:

hooks

Hooks 是 Nuxt 事件的监听器,通常用于模块,但在 nuxt.config 中也可用。

在内部,钩子遵循使用冒号的命名模式(例如,build:done)。为了便于配置,您也可以在 nuxt.config 中将它们结构化为分层对象(如下所示)。

示例:

import fs from 'node:fs'
import path from 'node:path'

export default defineNuxtConfig({
  hooks: {
    build: {
      done (builder) {
        const extraFilePath = path.join(
          builder.nuxt.options.buildDir,
          'extra-file',
        )
        fs.writeFileSync(extraFilePath, 'Something extra')
      },
    },
  },
})

ignore

ignorePrefix 更具可定制性:所有与 ignore 数组中指定的 glob 模式匹配的文件都将在构建中被忽略。

  • 类型array
  • 默认
[
  "**/*.stories.{js,cts,mts,ts,jsx,tsx}",
  "**/*.{spec,test}.{js,cts,mts,ts,jsx,tsx}",
  "**/*.d.{cts,mts,ts}",
  "**/.{pnpm-store,vercel,netlify,output,git,cache,data}",
  "**/*.sock",
  ".nuxt/analyze",
  ".nuxt",
  "**/-*.*"
]

ignoreOptions

直接将选项传递给 node-ignore(Nuxt 用于忽略文件)。

请参阅: node-ignore

示例:

export default defineNuxtConfig({
  ignoreOptions: {
    ignorecase: false,
  },
})

ignorePrefix

app/pages/app/layouts/app/middleware/public/ 目录中的任何文件,如果其文件名以 ignorePrefix 指定的前缀开头,将在构建过程中被忽略。这旨在防止某些文件在构建的应用程序中被处理或提供。默认情况下,ignorePrefix 设置为 '-',忽略任何以 '-' 开头的文件。

  • 类型: string
  • 默认值: "-"

imports (导入)

配置 Nuxt 如何将可组合项自动导入到您的应用程序中。

请参阅: Nuxt 文档

dirs

将自动导入的自定义目录数组。请注意,此选项不会覆盖默认目录 (~/composables, ~/utils)。

  • 类型array

示例:

export default defineNuxtConfig({
  imports: {
  // Auto-import pinia stores defined in `~/stores`
    dirs: ['stores'],
  },
})

global

  • 类型boolean
  • 默认值: false

scan

是否扫描您的 app/composables/app/utils/ 目录以自动导入可组合项。Nuxt 或其他模块注册的自动导入,例如来自 vuenuxt 的导入,将仍然启用。

  • 类型boolean
  • 默认值: true

logLevel

构建日志时的日志级别。

在 CI 中运行或 TTY 不可用时,默认为 'silent'。此选项在 Vite 中用作 'silent',在 webpack 中用作 'none'。

  • 类型: string
  • 默认值: "info"

modules

模块是 Nuxt 扩展,可以扩展其核心功能并添加无限的集成。

每个模块都是一个字符串(可以是包名,也可以是文件路径),一个包含模块作为第一个字符串和选项作为第二个对象的元组,或者一个内联模块函数。Nuxt 尝试使用 node require 路径(在 node_modules 中)解析模块数组中的每个项,然后如果使用 ~ 别名,将从项目 srcDir 解析。

  • 类型array
注意:模块按顺序执行,因此顺序很重要。首先,加载 nuxt.config.ts 中定义的模块。然后,执行 modules/ 目录中的模块,它们按字母顺序加载。

示例:

export default defineNuxtConfig({
  modules: [
  // Using package name
    '@nuxt/scripts',
    // Relative to your project srcDir
    '~/custom-modules/awesome.js',
    // Providing options
    ['@nuxtjs/google-analytics', { ua: 'X1234567' }],
    // Inline definition
    function () {},
  ],
})

modulesDir

用于设置模块目录以进行路径解析(例如,webpack 的 resolveLoadingnodeExternalspostcss)。

配置路径是相对于 options.rootDir(默认是当前工作目录)。如果您的项目组织为 yarn workspace 风格的单一存储库,则可能需要设置此字段。

  • 类型array
  • 默认
[
  "/<rootDir>/node_modules"
]

示例:

export default defineNuxtConfig({
  modulesDir: ['../../node_modules'],
})

nitro

Nitro 配置。

请参阅: Nitro 配置文档

routeRules

  • 类型object

runtimeConfig

  • 类型object
  • 默认
{
  "public": {},
  "app": {
    "buildId": "4a2e2d30-418f-41df-8e58-ed5df06de7fd",
    "baseURL": "/",
    "buildAssetsDir": "/_nuxt/",
    "cdnURL": ""
  },
  "nitro": {
    "envPrefix": "NUXT_"
  }
}

optimization

构建时优化配置。

asyncTransforms

直接传递给 unctx 转换器的选项,该转换器在 await 之后保留异步上下文。

asyncFunctions

  • 类型array
  • 默认
[
  "defineNuxtPlugin",
  "defineNuxtRouteMiddleware"
]

objectDefinitions

defineNuxtComponent
  • 类型array
  • 默认
[
  "asyncData",
  "setup"
]
defineNuxtPlugin
  • 类型array
  • 默认
[
  "setup"
]
definePageMeta
  • 类型array
  • 默认
[
  "middleware",
  "validate"
]

keyedComposables

注入键的函数。

只要传递给函数的参数数量小于 argumentLength,就会注入一个额外的魔术字符串,可用于在服务器和客户端之间去重请求。您需要采取措施来处理此附加键。该键将根据函数在文件中被调用的位置而唯一。

  • 类型array
  • 默认
[
  {
    "name": "callOnce",
    "argumentLength": 3
  },
  {
    "name": "defineNuxtComponent",
    "argumentLength": 2
  },
  {
    "name": "useState",
    "argumentLength": 2
  },
  {
    "name": "useFetch",
    "argumentLength": 3
  },
  {
    "name": "useAsyncData",
    "argumentLength": 3
  },
  {
    "name": "useLazyAsyncData",
    "argumentLength": 3
  },
  {
    "name": "useLazyFetch",
    "argumentLength": 3
  }
]

treeShake

从特定构建中进行代码树摇。

composables

从服务器或客户端构建中进行可组合项的树摇。

示例:

export default defineNuxtConfig({
  optimization: {
    treeShake: {
      composables: {
        client: { vue: ['onMounted'] },
        server: { vue: ['onServerPrefetch'] },
      },
    },
  },
})
client
  • 类型object
  • 默认
{
  "vue": [
    "onRenderTracked",
    "onRenderTriggered",
    "onServerPrefetch"
  ],
  "#app": [
    "definePayloadReducer",
    "definePageMeta",
    "onPrehydrate"
  ]
}
服务器
  • 类型object
  • 默认
{
  "vue": [
    "onMounted",
    "onUpdated",
    "onUnmounted",
    "onBeforeMount",
    "onBeforeUpdate",
    "onBeforeUnmount",
    "onRenderTracked",
    "onRenderTriggered",
    "onActivated",
    "onDeactivated"
  ],
  "#app": [
    "definePayloadReviver",
    "definePageMeta"
  ]
}

pages

是否在 Nuxt 3 中使用 vue-router 集成。如果您不提供值,则如果您在源文件夹中有一个 app/pages/ 目录,它将被启用。

此外,您可以提供一个 glob 模式或模式数组,以仅扫描某些文件中的页面。

示例:

export default defineNuxtConfig({
  pages: {
    pattern: ['**/*/*.vue', '!**/*.spec.*'],
  },
})

plugins

Nuxt 应用程序插件数组。

每个插件可以是一个字符串(可以是文件的绝对路径或相对路径)。如果它以 .client.server 结尾,那么它将仅在适当的上下文中自动加载。它也可以是一个带有 srcmode 键的对象。

  • 类型array
注意:插件也会从 ~/plugins 目录自动注册,这些插件无需在 nuxt.config 中列出,除非您需要自定义它们的顺序。所有插件都通过其 src 路径进行去重。

请参阅: app/plugins/ 目录文档

示例:

export default defineNuxtConfig({
  plugins: [
    '~/custom-plugins/foo.client.js', // only in client side
    '~/custom-plugins/bar.server.js', // only in server side
    '~/custom-plugins/baz.js', // both client & server
    { src: '~/custom-plugins/both-sides.js' },
    { src: '~/custom-plugins/client-only.js', mode: 'client' }, // only on client side
    { src: '~/custom-plugins/server-only.js', mode: 'server' }, // only on server side
  ],
})

postcss

order

PostCSS 插件的排序策略。

  • 类型function

plugins

配置 PostCSS 插件的选项。

请参阅: PostCSS 文档

autoprefixer

解析 CSS 并为 CSS 规则添加供应商前缀的插件。

请参阅: autoprefixer

cssnano

  • 类型object

请参阅: cssnano 配置选项

rootDir

定义应用程序的根目录。

此属性可以被覆盖(例如,运行 nuxt ./my-app/ 将把 rootDir 设置为当前/工作目录中 ./my-app/ 的绝对路径。通常不需要配置此选项。

  • 类型: string
  • 默认值: "/<rootDir>"

routeRules

应用于匹配服务器路由的全局路由选项。

实验性:这是一个实验性功能,API 将来可能会改变。

请参阅: Nitro 路由规则文档

router

options

传递给 vue-router 的额外路由选项。除了 vue-router 的选项外,Nuxt 还提供额外的选项来自定义路由器(见下文)。

注意:只有 JSON 可序列化的选项应通过 Nuxt 配置传递。为了更精细的控制,您可以使用 router.options.ts 文件。

请参阅: Vue Router 文档.

hashMode

您可以在 SPA 模式下启用哈希历史记录。在此模式下,路由器在内部传递的实际 URL 前使用哈希字符 (#)。启用后,URL 永远不会发送到服务器,并且不支持 SSR

  • 类型boolean
  • 默认值: false

默认值: false

scrollBehaviorType

自定义哈希链接的滚动行为。

  • 类型: string
  • 默认值: "auto"

默认值: 'auto'

runtimeConfig

运行时配置允许将动态配置和环境变量传递到 Nuxt 应用程序上下文。

此对象的值只能通过 useRuntimeConfig 从服务器访问。它主要应包含私有配置,这些配置不会暴露在前端。这可能包括对您的 API 秘密令牌的引用。在 publicapp 下的任何内容也将暴露给前端。值将根据运行时匹配的环境变量自动替换,例如,设置环境变量 NUXT_API_KEY=my-api-key NUXT_PUBLIC_BASE_URL=/foo/ 将覆盖下面示例中的两个值。

  • 类型object
  • 默认
{
  "public": {},
  "app": {
    "buildId": "4a2e2d30-418f-41df-8e58-ed5df06de7fd",
    "baseURL": "/",
    "buildAssetsDir": "/_nuxt/",
    "cdnURL": ""
  }
}

示例:

export default defineNuxtConfig({
  runtimeConfig: {
    apiKey: '', // Default to an empty string, automatically set at runtime using process.env.NUXT_API_KEY
    public: {
      baseURL: '', // Exposed to the frontend as well.
    },
  },
})

服务器

Nuxt 服务器构建器的配置。

builder

指定用于捆绑应用程序服务器部分的服务器构建器。

默认情况下,Nuxt 使用 @nuxt/nitro-server,它提供独立的 Nitro 集成。此架构允许不同的 Nitro 集成模式,例如使用 Nitro 作为 Vite 插件(带有 Vite Environment API)。

  • 类型string | { bundle: (nuxt: Nuxt) => Promise<void> }
  • 默认值: "@nuxt/nitro-server"
此选项旨在供内部使用,API 尚未最终确定。在依赖当前实现之前,请先提交 issue。

serverDir

定义 Nuxt 应用程序的服务器目录,其中包含 Nitro 路由、中间件和插件。

如果指定相对路径,它将相对于您的 rootDir

  • 类型: string
  • 默认值: "/<srcDir>/server"

serverHandlers

Nitro 服务器处理程序。

每个处理程序都接受以下选项

  • 处理程序:定义处理程序的文件的路径。 - 路由:处理程序可用的路由。这遵循以下约定rou3。 - 方法:应处理的请求的 HTTP 方法。 - 中间件:指定是否为中间件处理程序。 - 惰性:指定是否使用惰性加载导入处理程序。
  • 类型array

请参阅: server/ 目录文档

注意:来自 server/apiserver/middlewareserver/routes 的文件将由 Nuxt 自动注册。

示例:

export default defineNuxtConfig({
  serverHandlers: [
    { route: '/path/foo/**:name', handler: '~/server/foohandler.ts' },
  ],
})

sourcemap

配置是否以及如何为服务器和/或客户端捆绑包生成源映射。

如果设置为单个布尔值,则该值适用于服务器和客户端。此外,'hidden' 选项也适用于服务器和客户端。客户端和服务器的可用选项: - true:生成源映射并在最终捆绑包中包含源引用。 - false:不生成任何源映射。 - 'hidden':生成源映射但不包含最终捆绑包中的引用。

  • 类型object
  • 默认
{
  "server": true,
  "client": false
}

spaLoadingTemplate

布尔值或 HTML 文件的路径,其内容将插入到任何使用 ssr: false 渲染的 HTML 页面中。

  • 如果未设置,它将使用您的某个层中的 ~/spa-loading-template.html 文件(如果存在)。 - 如果为 false,则不会加载 SPA 加载指示器。 - 如果为 true,Nuxt 将在您的某个层中查找 ~/spa-loading-template.html 文件,否则将使用默认的 Nuxt 图像。一些好的旋转器来源是SpinKitSVG Spinners.
  • 默认值: null

示例:~/spa-loading-template.html

<!-- https://github.com/barelyhuman/snips/blob/dev/pages/css-loader.md -->
<div class="loader"></div>
<style>
.loader {
  display: block;
  position: fixed;
  z-index: 1031;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 18px;
  height: 18px;
  box-sizing: border-box;
  border: solid 2px transparent;
  border-top-color: #000;
  border-left-color: #000;
  border-bottom-color: #efefef;
  border-right-color: #efefef;
  border-radius: 50%;
  -webkit-animation: loader 400ms linear infinite;
  animation: loader 400ms linear infinite;
}

@-webkit-keyframes loader {
  0% {
    -webkit-transform: translate(-50%, -50%) rotate(0deg);
  }
  100% {
    -webkit-transform: translate(-50%, -50%) rotate(360deg);
  }
}
@keyframes loader {
  0% {
    transform: translate(-50%, -50%) rotate(0deg);
  }
  100% {
    transform: translate(-50%, -50%) rotate(360deg);
  }
}
</style>

srcDir

定义 Nuxt 应用程序的源目录。

如果指定相对路径,它将相对于 rootDir

  • 类型: string
  • 默认值: "app" (Nuxt 4), "." (Nuxt 3 with compatibilityMode: 3)

示例:

export default defineNuxtConfig({
  srcDir: 'app/',
})

这需要以下文件夹结构

-| app/
---| assets/
---| components/
---| layouts/
---| middleware/
---| pages/
---| plugins/
---| app.config.ts
---| app.vue
---| error.vue
-| server/
-| public/
-| modules/
-| nuxt.config.js
-| package.json

ssr

是否启用 HTML 渲染——无论是动态的(在服务器模式下)还是在生成时。如果设置为 false,生成的页面将没有内容。

  • 类型boolean
  • 默认值: true

telemetry

手动禁用 nuxt 遥测。

请参阅: Nuxt Telemetry获取更多信息。

test

您的应用程序是否正在进行单元测试。

  • 类型boolean
  • 默认值: false

theme

从本地或远程源扩展项目。

值应为字符串,指向源目录或相对于当前配置的配置路径。您可以使用 github:gitlab:bitbucket:https:// 从远程 git 仓库扩展。

  • 类型: string

typescript

Nuxt 的 TypeScript 集成配置。

builder

要包含在您的项目中的构建器类型。

默认情况下,Nuxt 根据您的 builder 选项(默认为 'vite')推断此选项,但您可以关闭构建器环境类型(使用 false)以完全自行处理,或者选择 'shared' 选项。建议模块作者使用 'shared' 选项,他们将希望支持多种可能的构建器。

  • 默认值: null

hoist

要在 compilerOptions.paths 中生成深层别名的模块。目前尚不支持子路径。在使用 pnpm monorepo 且 shamefully-hoist=false 时,可能需要此项。

  • 类型array
  • 默认
[
  "nitropack/types",
  "nitropack/runtime",
  "nitropack",
  "defu",
  "h3",
  "consola",
  "ofetch",
  "@unhead/vue",
  "@nuxt/devtools",
  "vue",
  "@vue/runtime-core",
  "@vue/compiler-sfc",
  "vue-router",
  "vue-router/auto-routes",
  "unplugin-vue-router/client",
  "@nuxt/schema",
  "nuxt"
]

includeWorkspace

在 Nuxt 项目中包含父工作区。主要用于主题和模块作者。

  • 类型boolean
  • 默认值: false

shim

生成 *.vue shim。

我们建议改为让官方 Vue 扩展为您的组件生成准确的类型。请注意,如果您正在使用其他库(例如 ESLint),并且它们无法理解 .vue 文件的类型,您可能希望将其设置为 true

  • 类型boolean
  • 默认值: false

strict

TypeScript 附带某些检查,可为您的程序提供更高的安全性和分析能力。将代码库转换为 TypeScript 后,您可以开始启用这些检查以提高安全性。阅读更多

  • 类型boolean
  • 默认值: true

tsConfig

您可以使用此选项扩展生成的 TypeScript 配置 (.nuxt/tsconfig.app.json.nuxt/tsconfig.server.json 等)。

typeCheck

启用构建时类型检查。

如果设置为 true,这将在开发中进行类型检查。您可以通过将其设置为 build 将其限制为构建时类型检查。需要安装 typescriptvue-tsc 作为开发依赖。

  • 类型boolean
  • 默认值: false

请参阅: Nuxt TypeScript 文档

unhead

一个对象,允许我们配置 unhead nuxt 模块。

legacy

unhead 模块启用旧版兼容模式。这将应用以下更改: - 禁用 Capo.js 排序 - 添加 DeprecationsPlugin:支持 hidvmidchildrenbody - 添加 PromisesPlugin:支持 promise 作为输入

  • 类型boolean
  • 默认值: false

请参阅: unhead 迁移文档

示例:

export default defineNuxtConfig({
  unhead: {
    legacy: true,
  },
})

renderSSRHeadOptions

将传递给 renderSSRHead 以自定义输出的对象。

  • 类型object
  • 默认
{
  "omitLineBreaks": false
}

示例:

export default defineNuxtConfig({
  unhead: {
    renderSSRHeadOptions: {
      omitLineBreaks: true,
    },
  },
})

vite

将直接传递给 Vite 的配置。

请参阅: Vite 配置文档了解更多信息。请注意,并非所有 Vite 选项都支持 Nuxt。

build

assetsDir

  • 类型: string
  • 默认值: "_nuxt/"

emptyOutDir

  • 类型boolean
  • 默认值: false

cacheDir

  • 类型: string
  • 默认值: "/<rootDir>/node_modules/.cache/vite"

clearScreen

  • 类型boolean
  • 默认值: true

define

  • 类型object
  • 默认
{
  "__VUE_PROD_HYDRATION_MISMATCH_DETAILS__": false,
  "process.dev": false,
  "import.meta.dev": false,
  "process.test": false,
  "import.meta.test": false
}

esbuild

  • 类型object
  • 默认
{
  "target": "esnext",
  "jsxFactory": "h",
  "jsxFragment": "Fragment",
  "tsconfigRaw": {}
}

模式

  • 类型: string
  • 默认值: "production"

optimizeDeps

esbuildOptions

  • 类型object
  • 默认
{
  "target": "esnext",
  "jsxFactory": "h",
  "jsxFragment": "Fragment",
  "tsconfigRaw": {}
}

exclude

  • 类型array
  • 默认
[
  "vue-demi"
]

publicDir

resolve

extensions

  • 类型array
  • 默认
[
  ".mjs",
  ".js",
  ".ts",
  ".jsx",
  ".tsx",
  ".json",
  ".vue"
]

root

  • 类型: string
  • 默认值: "/<srcDir>"

服务器

fs

allow
  • 类型array
  • 默认
[
  "/<rootDir>/.nuxt",
  "/<srcDir>",
  "/<rootDir>",
  "/<workspaceDir>"
]

vue

features

propsDestructure
  • 类型boolean
  • 默认值: true

isProduction

  • 类型boolean
  • 默认值: true

script

hoistStatic

template

compilerOptions
  • 类型object
transformAssetUrls
  • 类型object
  • 默认
{
  "video": [
    "src",
    "poster"
  ],
  "source": [
    "src"
  ],
  "img": [
    "src"
  ],
  "image": [
    "xlink:href",
    "href"
  ],
  "use": [
    "xlink:href",
    "href"
  ]
}

vueJsx

  • 类型object
  • 默认
{
  "isCustomElement": {
    "$schema": {
      "title": "",
      "description": "",
      "tags": []
    }
  }
}

vue

Vue.js 配置

compilerOptions

将在构建时传递的 Vue 编译器选项。

请参阅: Vue 文档

config

可以全局配置 Vue 应用程序。只有可序列化选项可以在您的 nuxt.config 中设置。所有其他选项都应在运行时在 Nuxt 插件中设置。

请参阅: Vue 应用程序配置文档

propsDestructure

defineProps 启用响应式解构。

  • 类型boolean
  • 默认值: true

runtimeCompiler

在运行时捆绑包中包含 Vue 编译器。

  • 类型boolean
  • 默认值: false

transformAssetUrls

image

  • 类型array
  • 默认
[
  "xlink:href",
  "href"
]

img

  • 类型array
  • 默认
[
  "src"
]

source

  • 类型array
  • 默认
[
  "src"
]

use

  • 类型array
  • 默认
[
  "xlink:href",
  "href"
]

video

  • 类型array
  • 默认
[
  "src",
  "poster"
]

watch

watch 属性允许您定义在更改时重新启动 Nuxt 开发服务器的模式。

它是一个字符串或正则表达式数组。字符串应为绝对路径或相对于 srcDir(以及任何层的 srcDir)。正则表达式将与相对于项目 srcDir(以及任何层的 srcDir)的路径进行匹配。

  • 类型array

watchers

watchers 属性允许您覆盖 nuxt.config 中的监听器配置。

chokidar

直接传递给 chokidar 的选项。

请参阅: chokidar

ignoreInitial

  • 类型boolean
  • 默认值: true

ignorePermissionErrors

  • 类型boolean
  • 默认值: true

rewatchOnRawEvents

一个事件类型数组,当接收到这些事件时,将导致监视器重新启动。

webpack

直接传递给 webpack 的 watchOptions

请参阅: webpack@4 watch options.

aggregateTimeout

  • 类型number
  • 默认值: 1000

webpack

aggressiveCodeRemoval

硬替换 typeof processtypeof windowtypeof document 以进行捆绑包的 tree-shake。

  • 类型boolean
  • 默认值: false

analyze

如果您正在使用 webpack,Nuxt 使用 webpack-bundle-analyzer 来可视化您的捆绑包以及如何优化它们。

设置为 true 以启用捆绑分析,或传递一个带有选项的对象for webpackfor vite.

  • 类型object
  • 默认
{
  "template": "treemap",
  "projectRoot": "/<rootDir>",
  "filename": "/<rootDir>/.nuxt/analyze/{name}.html"
}

示例:

export default defineNuxtConfig({
  webpack: {
    analyze: {
      analyzerMode: 'static',
    },
  },
})

cssSourceMap

启用 CSS 源映射支持(开发中默认为 true)。

  • 类型boolean
  • 默认值: false

devMiddleware

请参阅webpack-dev-middleware查看可用选项。

stats

  • 类型: string
  • 默认值: "none"

experiments

配置webpack experiments

extractCSS

启用通用 CSS 提取。

使用mini-css-extract-plugin在底层,您的 CSS 将被提取到单独的文件中,通常每个组件一个。这允许单独缓存您的 CSS 和 JavaScript。

  • 类型boolean
  • 默认值: true

示例:

export default defineNuxtConfig({
  webpack: {
    extractCSS: true,
    // or
    extractCSS: {
      ignoreOrder: true,
    },
  },
})

如果您想将所有 CSS 提取到一个文件中,有一个解决方法。但是,请注意不建议将所有内容提取到一个文件中。提取到多个 CSS 文件有利于缓存和预加载隔离。它还可以通过仅下载和解析所需的资源来提高页面性能。

示例:

export default defineNuxtConfig({
  webpack: {
    extractCSS: true,
    optimization: {
      splitChunks: {
        cacheGroups: {
          styles: {
            name: 'styles',
            test: /\.(css|vue)$/,
            chunks: 'all',
            enforce: true,
          },
        },
      },
    },
  },
})

filenames

自定义捆绑包文件名。

要更多地了解清单的使用,请查看webpack 文档.

注意:在生产环境中使用非哈希文件名时要小心,因为大多数浏览器会缓存资产,并且在首次加载时不会检测到更改。

此示例将花式块名称更改为数字 ID

示例:

export default defineNuxtConfig({
  webpack: {
    filenames: {
      chunk: ({ isDev }) => (isDev ? '[name].js' : '[id].[contenthash].js'),
    },
  },
})

app

  • 类型function

chunk

  • 类型function

css

  • 类型function

font

  • 类型function

img

  • 类型function

video

  • 类型function

friendlyErrors

设置为 false 以禁用 FriendlyErrorsWebpackPlugin 提供的覆盖。FriendlyErrorsWebpackPlugin.

  • 类型boolean
  • 默认值: true

hotMiddleware

请参阅webpack-hot-middleware查看可用选项。

loaders

自定义 Nuxt 集成 webpack 加载器的选项。

css

请参阅css-loader查看可用选项。

esModule
  • 类型boolean
  • 默认值: false
importLoaders
  • 类型number
  • 默认值: 0
url
filter
  • 类型function

cssModules

请参阅css-loader查看可用选项。

esModule
  • 类型boolean
  • 默认值: false
importLoaders
  • 类型number
  • 默认值: 0
modules
localIdentName
  • 类型: string
  • 默认值: "[local]_[hash:base64:5]"
url
filter
  • 类型function

esbuild

  • 类型object
  • 默认
{
  "target": "esnext",
  "jsxFactory": "h",
  "jsxFragment": "Fragment",
  "tsconfigRaw": {}
}

请参阅: esbuild loader

file

请参阅: file-loader 选项

默认:

{ "esModule": false }
esModule
  • 类型boolean
  • 默认值: false
limit
  • 类型number
  • 默认值: 1000

fontUrl

请参阅: file-loader 选项

默认:

{ "esModule": false }
esModule
  • 类型boolean
  • 默认值: false
limit
  • 类型number
  • 默认值: 1000

imgUrl

请参阅: file-loader 选项

默认:

{ "esModule": false }
esModule
  • 类型boolean
  • 默认值: false
limit
  • 类型number
  • 默认值: 1000

less

  • 默认
{
  "sourceMap": false
}

请参阅: less-loader 选项

pugPlain

请参阅: pug 选项

sass

请参阅: sass-loader 选项

默认:

{
  "sassOptions": {
    "indentedSyntax": true
  }
}
sassOptions
indentedSyntax
  • 类型boolean
  • 默认值: true

scss

  • 默认
{
  "sourceMap": false
}

请参阅: sass-loader 选项

stylus

  • 默认
{
  "sourceMap": false
}

请参阅: stylus-loader 选项

vue

请参阅vue-loader查看可用选项。

compilerOptions
  • 类型object
propsDestructure
  • 类型boolean
  • 默认值: true
transformAssetUrls
  • 类型object
  • 默认
{
  "video": [
    "src",
    "poster"
  ],
  "source": [
    "src"
  ],
  "img": [
    "src"
  ],
  "image": [
    "xlink:href",
    "href"
  ],
  "use": [
    "xlink:href",
    "href"
  ]
}

vueStyle

  • 默认
{
  "sourceMap": false
}

optimization

配置webpack optimization.

minimize

将 minimize 设置为 false 以禁用所有压缩器。(在开发中默认禁用)。

  • 类型boolean
  • 默认值: true

minimizer

您可以将 minimizer 设置为自定义插件数组。

runtimeChunk

  • 类型: string
  • 默认值: "single"

splitChunks

automaticNameDelimiter
  • 类型: string
  • 默认值: "/"
cacheGroups
chunks
  • 类型: string
  • 默认值: "all"

optimizeCSS

OptimizeCSSAssets 插件选项。

extractCSS 启用时,默认为 true。

  • 类型boolean
  • 默认值: false

请参阅: css-minimizer-webpack-plugin 文档.

plugins

添加 webpack 插件。

  • 类型array

示例:

import webpack from 'webpack'
import { version } from './package.json'

export default defineNuxtConfig({
  webpack: {
    plugins: [
      // ...
      new webpack.DefinePlugin({
        'process.VERSION': version,
      }),
    ],
  },
})

postcss

自定义 PostCSS 加载器。与postcss-loader 选项相同

postcssOptions

plugins
  • 类型object
  • 默认
{
  "autoprefixer": {},
  "cssnano": {}
}

profile

在 webpackbar 中启用分析器。

通常通过 CLI 参数 --profile 启用。

  • 类型boolean
  • 默认值: false

请参阅: webpackbar.

serverURLPolyfill

用于提供 URL 和 URLSearchParams 的 polyfill 库。

默认为 'url'参见包).

  • 类型: string
  • 默认值: "url"

warningIgnoreFilters

用于隐藏构建警告的过滤器。

  • 类型array

workspaceDir

定义应用程序的工作区目录。

通常在单体仓库设置中使用。Nuxt 将尝试自动检测您的工作区目录,但您可以在此处覆盖它。通常不需要配置此选项。

  • 类型: string
  • 默认值: "/<workspaceDir>"