doppler
nuxt-doppler

DopplerシークレットをNuxtビルドに統合

Doppler Nuxtモジュール

Made with 💚 by 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.config.tsmodulesセクションにnuxt-dopplerを追加します
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にはプロジェクト => 構成の階層があります。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
}

有効

boolean - デフォルト: true

モジュールを有効/無効にするだけです。これは、特定の環境でモジュールを無効にしたい場合に便利です。デフォルトはtrueです。

only

string[] - オプション

これは、Doppler APIから取得するDopplerシークレットの文字列配列です。これが設定されている場合、これらのシークレットのみが取得され、runtimeConfigオブジェクトにマッピングされます。これが設定されていない場合、すべてのシークレットが取得されますが、runtimeConfigオブジェクトにマッピングできるシークレットのみがマッピングされます。

exclude

string[] - オプション

これは、runtimeConfigオブジェクトへのマッピングから除外するDopplerシークレットの文字列配列です。特定のDopplerシークレットのみを使用し、残りを通常どおり環境変数から取得したい場合に便利です。

debug

boolean - デフォルト: false

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

さらに読む

このモジュールは、提供されたserviceTokenを使用してDoppler APIから指定されたDopplerプロジェクト/設定のシークレットを取得することで動作します。その後、runtimeConfigオブジェクトを深くループし、取得されたDopplerシークレットをランタイム構成オブジェクトにマッピングし、プレーン文字列として設定します。これは、Nuxtがプロセス環境変数に対して内部的に行うことと同じです。

これはすべてビルド時に行われるため、ランタイム時に環境変数を公開する必要はありません。

これがビルド時に行われるため、ビルドプロセス/CIはDopplerのserviceTokenにアクセスできる必要があります。ビルド時にこのサービス・トークンを環境変数を通して公開することをお勧めします。これは、たとえばGitHub Actionsのアクションシークレットで行うことができます。これにより、ビルドパイプラインでこの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