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-dopplernuxt.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.tsruntimeConfig に追加します。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

string - 必須

これは、doppler プロジェクト/設定の Doppler サービストークンです。キーを生成します。環境変数を使用してこれを格納することをお勧めします。この環境変数は、nuxt アプリのビルドプロセスでのみ必要です。ランタイムプロセスには含めないでください。

project

string - 必須

これは、シークレットにアクセスする doppler プロジェクトの名前です。

config

string - 必須

これは、シークレットにアクセスする doppler プロジェクト内の doppler 設定の名前です。Doppler には project => config 階層があります。1 つのプロジェクトに複数の設定を含めることができます。これにより、環境ごとに異なるシークレットを持つことができます。

通常、ローカル開発/ステージング/本番環境ごとに異なる設定があります。正しい設定文字列を取得するには任意の方法を使用できますが、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 シークレットのみを使用し、残りは通常どおり env 変数から取得する場合に役立ちます。

debug

boolean - デフォルト: false

デバッグモードが有効になります。Doppler API からフェッチされた Doppler シークレットが出力されます。これはデバッグに役立ちます。

参考資料

このモジュールの動作方法は、指定された serviceToken を使用して Doppler API を使用し、指定された Doppler プロジェクト/設定のシークレットをフェッチすることです。次に、runtimeConfig オブジェクトを深くループして、フェッチされた Dopper シークレットをランタイム設定オブジェクトにマッピングし、プレーン文字列として設定します。これは、Nuxt がプロセス env 変数で内部的に行うことと同じです。

これはすべてビルド時に行われるため、実行時に env 変数を公開する必要はありません。

これはビルド時に行われるため、ビルドプロセス/ci は Doppler serviceToken にアクセスできる必要があります。ビルド時に環境変数を介してこのサービストークンを公開することをお勧めします。これは、たとえば github アクションのアクションシークレットを使用して行うことができます。つまり、ビルドパイプラインでこの 1 つのシークレットのみを公開して維持するだけでよく、その他すべては 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