配置

Nuxt 预设了合理的默认配置,助您提高效率。

默认情况下,Nuxt 的配置涵盖了大多数用例。nuxt.config.ts 文件可以覆盖或扩展此默认配置。

Nuxt 配置

nuxt.config.ts 文件位于 Nuxt 项目的根目录,可以覆盖或扩展应用程序的行为。

一个最小的配置文件会导出 defineNuxtConfig 函数,其中包含一个带有您的配置的对象。defineNuxtConfig 辅助函数全局可用,无需导入。

nuxt.config.ts
export default defineNuxtConfig({
  // My Nuxt config
})

此文件在文档中经常被提及,例如用于添加自定义脚本、注册模块或更改渲染模式。

每个选项都在配置参考中进行了描述。
您无需使用 TypeScript 即可使用 Nuxt 构建应用程序。但是,强烈建议对 nuxt.config 文件使用 .ts 扩展名。这样您就可以在编辑配置时受益于 IDE 中的提示,避免拼写错误和失误。

环境覆盖

您可以在 nuxt.config 中配置完全类型化的、按环境覆盖的配置。

nuxt.config.ts
export default defineNuxtConfig({
  $production: {
    routeRules: {
      '/**': { isr: true },
    },
  },
  $development: {
    //
  },
  $env: {
    staging: {
      //
    },
  },
})

要在运行 Nuxt CLI 命令时选择环境,只需将名称传递给 --envName 标志,例如:nuxt build --envName staging

要了解这些覆盖背后的机制,请参阅 c12 文档关于特定环境配置.

如果您正在编写层,您还可以使用 $meta 键提供您或您的层的消费者可能使用的元数据。

环境变量和私有令牌

runtimeConfig API 将环境变量等值暴露给应用程序的其余部分。默认情况下,这些键仅在服务器端可用。runtimeConfig.publicruntimeConfig.app(Nuxt 内部使用)中的键也在客户端可用。

这些值应该在 nuxt.config 中定义,并且可以使用环境变量进行覆盖。

export default defineNuxtConfig({
  runtimeConfig: {
    // The private keys which are only available server-side
    apiSecret: '123',
    // Keys within public are also exposed client-side
    public: {
      apiBase: '/api',
    },
  },
})

这些变量使用 useRuntimeConfig() 可组合函数暴露给应用程序的其余部分。

app/pages/index.vue
<script setup lang="ts">
const runtimeConfig = useRuntimeConfig()
</script>
文档 > 4 X > 指南 > 深入 > 运行时配置中阅读更多内容。

应用程序配置

位于源目录(默认为 app/)中的 app.config.ts 文件用于暴露可在构建时确定的公共变量。与 runtimeConfig 选项相反,这些变量不能使用环境变量进行覆盖。

一个最小的配置文件会导出 defineAppConfig 函数,其中包含一个带有您的配置的对象。defineAppConfig 辅助函数全局可用,无需导入。

app/app.config.ts
export default defineAppConfig({
  title: 'Hello Nuxt',
  theme: {
    dark: true,
    colors: {
      primary: '#ff0000',
    },
  },
})

这些变量使用 useAppConfig 可组合函数暴露给应用程序的其余部分。

app/pages/index.vue
<script setup lang="ts">
const appConfig = useAppConfig()
</script>
文档 > 4 X > 指南 > 目录结构 > 应用程序 > 应用程序配置 中阅读更多内容。

runtimeConfigapp.config

如上所述,runtimeConfigapp.config 都用于向应用程序的其余部分暴露变量。为了确定您应该使用哪一个,这里有一些指导原则

  • runtimeConfig:私有或公共令牌,需要在构建后使用环境变量指定。
  • app.config:在构建时确定的公共令牌、网站配置(如主题变体、标题)以及任何非敏感的项目配置。
功能runtimeConfigapp.config
客户端水合打包
环境变量✅ 是❌ 否
响应式✅ 是✅ 是
类型支持✅ 部分✅ 是
按请求配置❌ 否✅ 是
热模块替换❌ 否✅ 是
非原始 JS 类型❌ 否✅ 是

外部配置文件

Nuxt 使用 nuxt.config.ts 文件作为配置的单一真相来源,并跳过读取外部配置文件。在构建项目的过程中,您可能需要配置这些文件。下表强调了常见的配置以及(如适用)如何在 Nuxt 中进行配置。

名称配置文件如何配置
Nitronitro.config.tsnuxt.config 中使用 nitro
PostCSSpostcss.config.jsnuxt.config 中使用 postcss
Vitevite.config.tsnuxt.config 中使用 vite
webpackwebpack.config.tsnuxt.config 中使用 webpack

以下是其他常见配置文件的列表

名称配置文件如何配置
TypeScripttsconfig.json更多信息
ESLinteslint.config.js更多信息
Prettierprettier.config.js更多信息
Stylelintstylelint.config.js更多信息
TailwindCSStailwind.config.js更多信息
Vitestvitest.config.ts更多信息

Vue 配置

使用 Vite

如果您需要将选项传递给 @vitejs/plugin-vue@vitejs/plugin-vue-jsx,您可以在 nuxt.config 文件中执行此操作。

  • 用于 @vitejs/plugin-vuevite.vue。查看可用选项.
  • 用于 @vitejs/plugin-vue-jsxvite.vueJsx。查看可用选项.
nuxt.config.ts
export default defineNuxtConfig({
  vite: {
    vue: {
      customElement: true,
    },
    vueJsx: {
      mergeProps: true,
    },
  },
})
文档 > 4 X > API > 配置 > Nuxt 配置#vue 中阅读更多内容。

使用 webpack

如果您使用 webpack 并需要配置 vue-loader,您可以在 nuxt.config 文件中使用 webpack.loaders.vue 键进行此操作。可用选项在此处定义.

nuxt.config.ts
export default defineNuxtConfig({
  webpack: {
    loaders: {
      vue: {
        hotReload: true,
      },
    },
  },
})
文档 > 4 X > API > 配置 > Nuxt 配置#loaders 中阅读更多内容。

启用实验性 Vue 功能

您可能需要启用 Vue 中的实验性功能,例如 propsDestructure。无论您使用哪种构建器,Nuxt 都提供了一种在 nuxt.config.ts 中轻松实现此功能的方法

nuxt.config.ts
export default defineNuxtConfig({
  vue: {
    propsDestructure: true,
  },
})

从 Vue 3.4 和 Nuxt 3.9 迁移实验性 reactivityTransform

自 Nuxt 3.9 和 Vue 3.4 起,reactivityTransform 已从 Vue 移至 Vue Macros,后者具有Nuxt 集成.

文档 > 4 X > API > 配置 > Nuxt 配置#vue 1 中阅读更多内容。