返回介绍

开场白

开始使用

API

配置

部署

其他

Runtime Config

发布于 2024-04-16 21:38:22 字数 3769 浏览 0 评论 0 收藏 0

Nuxt.js supports env config to provide configuration via process.env . This is done by webpack's DefinePlugin .

This approach had two downsides:

  • Values are read during build time and persisted into webpack bundle. So for a change to process.env we need to rebuild which is against 12factor app design
  • It can easily mislead to expose secret keys to client-side bundle

You can learn more about why we are moving from @nuxtjs/dotenv to runtime config .

Runtime Config (2.13+)

Two new options added to nuxt.config to allow passing runtime configuration which is then accessible using context $config .

Config is added to Nuxt payload ( __NUXT__.config ) so there is no need to rebuild to update runtime configuration. SSR, SPA, and Static targets supported with an exception that for static target, a regenerate is necessary.

export default {
  publicRuntimeConfig: {},
  privateRuntimeConfig: {}
}
  • publicRuntimeConfig is available using $config in both server and client.
  • privateRuntimeConfig is only available on server using same $config (it overrides publicRuntimeConfig )

Usage

$config is available anywhere from context (including pages, store and plugins)

export default {
  asyncData({ $config: { baseURL } }) {
    fetch(`${baseURL}/test`)
  },
  mounted() {
    console.log(this.$config.testValue)
  }
}

.env support

If you have .env file in project root directory, it will be automatically loaded using dotenv and is accessible via process.env .

process.env is updated so we can use it right inside nuxt.config for runtime config. Values are interpolated and expanded with an improved version of dotenv-expand .

.env file is also watched to reload during nuxt dev . You can customize the env path by using --dotenv <file> or disabling with --dotenv false .

Expand/Interpolation Support

Supported both for dotenv and runtime config.

Expand for runtime config happens only if there is already a key (see API_SECRET example).

Interpolation allows easy nesting env vars (see baseURL example).

.env :

BASE_URL=/api
PUBLIC_URL=https://nuxtjs.org  
API_SECRET=1234

nuxt.config.js :

export default {
  publicRuntimeConfig: {
    baseURL: process.env.BASE_URL
  },
  privateRuntimeConfig: {
    baseURL: '${PUBLIC_URL}${BASE_URL}',
    API_SECRET: '${API_SECRET}' // similar to using process.env.API_SECRET
  }
}

Note, it is possible to use a function for publicRuntimeConfig and privateRuntimeConfig but not recommended.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文