配置

Nuxt 配置了合理的默认设置,以提高您的生产力。

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

Nuxt 配置

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

一个最小的配置文件导出包含您配置的对象的 defineNuxtConfig 函数。 defineNuxtConfig 助手在全局范围内可用,无需导入。

nuxt.config.ts
export default defineNuxtConfig({
  // 我的 Nuxt 配置
})

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

每个选项在 配置参考 中都有描述。
您不必使用 TypeScript 来构建应用程序。但是,强烈建议为 nuxt.config 文件使用 .ts 扩展名。这样,您可以在编辑配置时,从 IDE 中获得提示,以避免拼写错误和失误。

环境覆盖

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

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

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

要了解更多关于这些覆盖机制的信息,请参考 c12 文档中的 环境特定配置

观看 Alexander Lichter 关于支持环境的 nuxt.config.ts 的视频。
如果您正在编写层,您也可以使用 $meta 键提供您或您的层的使用者可能使用的元数据。

环境变量和私有令牌

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

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

export default defineNuxtConfig({
  runtimeConfig: {
    // 仅在服务器端可用的私有键
    apiSecret: '123',
    // public 中的键也暴露给客户端
    public: {
      apiBase: '/api'
    }
  }
})

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

pages/index.vue
<script setup lang="ts">
const runtimeConfig = useRuntimeConfig()
</script>
Read more in Docs > Guide > Going Further > Runtime Config.

应用程序配置

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

一个最小的配置文件导出包含您配置的对象的 defineAppConfig 函数。 defineAppConfig 助手在全局范围内可用,无需导入。

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

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

pages/index.vue
<script setup lang="ts">
const appConfig = useAppConfig()
</script>
Read more in Docs > Guide > Directory Structure > App Config.

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 文件中进行配置。

  • vite.vue 用于 @vitejs/plugin-vue。 可用选项请查看 这里
  • vite.vueJsx 用于 @vitejs/plugin-vue-jsx。 可用选项请查看 这里
nuxt.config.ts
export default defineNuxtConfig({
  vite: {
    vue: {
      customElement: true
    },
    vueJsx: {
      mergeProps: true
    }
  }
})
Read more in Docs > API > Configuration > Nuxt Config#vue.

使用 webpack

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

nuxt.config.ts
export default defineNuxtConfig({
  webpack: {
    loaders: {
      vue: {
        hotReload: true,
      }
    }
  }
})
Read more in Docs > API > Configuration > Nuxt Config#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 集成

Read more in Docs > API > Configuration > Nuxt Config#vue 1.