透過 100+ 技巧的集合學習 Nuxt!

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.tsmodules 區段
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 中的 runtimeConfigruntimeConfig 中的任何金鑰都將對應到您的 Doppler 機密資訊。 在此處閱讀關於 runtime config 的資訊

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

string - 必填

這是您 Doppler 專案/設定的 Doppler 服務令牌。 產生您的金鑰。建議您使用環境變數來儲存此令牌。此環境變數僅在您的 nuxt 應用程式的建置過程中為必要。不應在運行時過程中存在。

project

string - 必填

這是您想要從中存取機密資訊的 doppler 專案名稱。

config

string - 必填

這是您想要從中存取機密資訊的 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

boolean - 預設值:true

僅啟用/停用模組。如果您想要在特定環境中停用模組,這會很有用。預設值為 true

only

string[] - 選填

這是要從 Doppler API 提取的 Doppler 機密資訊的字串陣列。如果設定此項,則只會提取這些機密資訊並對應到 runtimeConfig 物件。如果未設定此項,則會提取所有機密資訊,但只會對應可以對應到 runtimeConfig 物件的機密資訊。

exclude

string[] - 選填

這是要從對應到 runtimeConfig 物件中排除的 Doppler 機密資訊的字串陣列。如果您只想使用某些 Doppler 機密資訊,並像往常一樣從環境變數取得其餘資訊,這會很有用。

debug

boolean - 預設值:false

這將啟用偵錯模式。這將記錄從 Doppler API 提取的 Doppler 機密資訊。這對於偵錯很有用。

延伸閱讀

此模組的運作方式是使用 Doppler API 和提供的 serviceToken 來提取給定 Doppler 專案/設定的機密資訊。然後它會深度迴圈您的 runtimeConfig 物件,並將任何提取的 Dopper 機密資訊對應到 runtime config 物件,將它們設定為純字串。這與 Nuxt 在內部對您的 process env vars 所做的事情相同。

這一切都發生在建置時,這表示您不需要在運行時公開任何環境變數。

由於這發生在建置時,您的建置過程/ci 將需要存取 Doppler serviceToken。建議您在建置時透過環境變數公開此服務令牌。這可以使用 github actions 中的 Action secrets 來完成。這表示您只需要在您的建置管道中公開和維護這一個機密資訊,而其他所有內容都由 Doppler 管理。

runtimeConfig 在 Nuxt 中的運作方式是,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