Nuxt Nation 大会即将到来。加入我们,时间为 11 月 12 日至 13 日。

doppler
nuxt-doppler

将您的 Doppler 密钥集成到您的 Nuxt 构建中

Doppler Nuxt 模块

Hiyield精心打造 💚

npm versionnpm downloadsLicenseNuxt

将您的 Doppler 密钥集成到您的 Nuxt 构建中,以安全、同步且集中地管理所有环境变量和密钥 🔒

功能

  • 🚀  最小化设置
  • 🔐  安全

快速设置

  1. nuxt-doppler 依赖项添加到您的项目中
# Using pnpm
pnpm add -D nuxt-doppler

# Using yarn
yarn add --dev nuxt-doppler

# Using npm
npm install --save-dev nuxt-doppler
  1. nuxt-doppler 添加到 nuxt.config.ts 文件的 modules 部分
export default defineNuxtConfig({
  modules: ['nuxt-doppler']
})
  1. 配置 Doppler 模块
export default defineNuxtConfig({
  modules: ['nuxt-doppler'],

  doppler: {
    // your Doppler service token
    serviceToken: process.env.DOPPLER_SERVICE_TOKEN,
    // your Doppler project name
    project: 'your-doppler-project',
    // your Doppler config name
    config: process.env.NODE_ENV === 'production' ? 'production' : 'development',
  }
})
  1. 添加到 nuxt.config.ts 文件中的 runtimeConfig 中。 runtimeConfig 中的任何键都将映射到您的 Doppler 密钥。 在此处了解有关运行时配置的信息

NUXT_PUBLIC_YOUR_VAR => runtimeConfig.public.yourVar。

export default defineNuxtConfig({
  runtimeConfig: {
    public: {
      yourVar: ''
    }
  },

  modules: ['nuxt-doppler'],

  doppler: {
    // your Doppler service token
    serviceToken: process.env.DOPPLER_SERVICE_TOKEN,
    // your Doppler project name
    project: 'your-doppler-project',
    // your Doppler config name
    config: process.env.NODE_ENV === 'production' ? 'production' : 'development',
  }
})

就是这样!您的密钥现在可以在 Nuxt 中使用了!✨

配置

serviceToken

字符串 - 必需

这是您 Doppler 项目/配置的 Doppler 服务令牌。 生成您的密钥。建议您使用环境变量来存储它。此环境变量仅在 Nuxt 应用的构建过程中需要。它不应在运行时进程中。

project

字符串 - 必需

这是您要从中访问密钥的 Doppler 项目的名称。

config

字符串 - 必需

这是您要从中访问密钥的 Doppler 项目中的 Doppler 配置的名称。Doppler 具有项目 => 配置的层次结构。您可以在一个项目中拥有多个配置。这允许您为不同的环境提供不同的密钥。

通常,您将为本地开发/暂存/生产环境提供不同的配置。您可以使用任何方法获取正确的配置字符串,但使用 process.env.NODE_ENV 是一种简单的方法,因为 Nuxt 会在生产构建中自动将其设置为 production

doppler: {
  //...
  config: process.env.NODE_ENV === 'production' ? 'production' : 'development'
}

另一种方法是在构建过程中设置 ENV 环境变量。如果您有多个类似生产的环境,这将很有用。

ENV=staging npm run build
doppler: {
  //...
  config: process.env.ENV
}

enabled

布尔值 - 默认值:true

启用/禁用模块。如果您想在特定环境中禁用模块,这将很有用。默认为 true

only

字符串数组 - 可选

这是一个要从 Doppler API 中获取的 Doppler 密钥的字符串数组。如果设置了此选项,则仅获取这些密钥并将其映射到 runtimeConfig 对象。如果未设置此选项,则将获取所有密钥,但仅映射可以映射到 runtimeConfig 对象的密钥。

exclude

字符串数组 - 可选

这是一个要从映射到 runtimeConfig 对象中排除的 Doppler 密钥的字符串数组。如果您只想使用某些 Doppler 密钥并像往常一样从环境变量获取其余密钥,这将很有用。

debug

布尔值 - 默认值:false

这将启用调试模式。这将记录从 Doppler API 获取的 Doppler 密钥。这对于调试很有用。

进一步阅读

此模块的工作原理是使用提供的 serviceToken 与 Doppler API 交互,以获取给定 Doppler 项目/配置的密钥。然后,它会深入循环遍历您的 runtimeConfig 对象,并将任何获取到的 Dopper 密钥映射到运行时配置对象,并将它们设置为纯字符串。这与 Nuxt 在内部处理您的进程环境变量的方式相同。

所有这些都在构建时发生,这意味着您不需要在运行时公开任何环境变量。

由于这发生在构建时,因此您的构建过程/CI 将需要访问 Doppler serviceToken。建议您在构建时通过环境变量公开此服务令牌。例如,这可以通过 GitHub Actions 中的操作密钥来完成。这意味着您只需要在构建管道中公开和维护此一个密钥,其他所有内容都由 Doppler 管理。

Nuxt 中 runtimeConfig 的工作原理是,Nuxt 首先查找与 runtimeConfig 密钥匹配的环境变量。如果找到,它将使用该变量。如果找不到,它将使用 runtimeConfig 对象中的默认值。

此模块在 Nuxt 完成此操作 **之后** 运行。因此,它将优先于您设置的任何环境变量。

开发

# Install dependencies
npm install

# Generate type stubs
npm run dev:prepare

# Develop with the playground
npm run dev

# Build the playground
npm run dev:build

# Run ESLint
npm run lint

# Run Vitest
npm run test
npm run test:watch

# Release new version
npm run release