Configuration

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

Nuxt Configuration

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

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

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

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

每个配置选项在 配置参考 中都有描述。
你不一定要使用TypeScript来构建Nuxt的应用程序。然而,我们强烈建议在 nuxt.config 文件中使用 .ts 扩展。这样你就可以从IDE的提示中获益,避免在编辑配置时出现错别字和错误。

Environment Variables and Private Tokens

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

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

nuxt.config.ts
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'    }  }})
.env
# This will override the value of apiSecret
NUXT_API_SECRET=api_secret_token

这些变量通过 useRuntimeConfig 可组合的方式暴露给你的应用程序的其他部分。

pages/index.vue
<script setup>const runtimeConfig = useRuntimeConfig()</script>

App Configuration

app.config.ts 文件也位于Nuxt项目的根部,用于暴露公共变量,可以在构建时确定。与 runtimeConfig 选项不同的是,这些变量不能用环境变量覆盖。

一个最小的配置文件导出了 defineAppConfig 函数,包含了一个你的配置对象。 defineAppConfig 助手函数是全局可用的,无需导入。

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

这些变量通过 useAppConfig 可组合的方式暴露给你的应用程序的其他部分。

pages/index.vue
<script setup>const appConfig = useAppConfig()</script>

runtimeConfig vs app.config

如上所述,runtimeConfigapp.config 都是用来向应用程序的其他部分暴露变量的。为了确定你应该使用一个还是另一个,这里有一些准则:

  • runtimeConfig: 需要在构建后使用环境变量指定的私人或公共令牌。
  • app.config : 在构建时确定的公共令牌,网站配置,如主题变量、标题和任何不敏感的项目配置。
FeatureruntimeConfigapp.config
Client SideHydratedBundled
Environment Variables✅ Yes❌ No
Reactive✅ Yes✅ Yes
Types support✅ Partial✅ Yes
Configuration per Request❌ No✅ Yes
Hot Module Replacement❌ No✅ Yes
Non primitive JS types❌ No✅ Yes