Svelte入門:リファレンス $env/static/private

スポンサーリンク
Svelte入門:リファレンス $env/static/private 用語解説
Svelte入門:リファレンス $env/static/private
この記事は約3分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、SvelteKitのリファレンスについて解説しています。

スポンサーリンク

背景

SvelteKitのリファレンスについて調査する機会がありましたので、その時の内容を備忘として記事に残しました。

$env/static/private

Viteによって.envファイルとprocess.envから読み込まれる環境変数です。$env/dynamic/privateと同様に、このモジュールはクライアントサイドのコードにインポートすることはできません。このモジュールには、config.kit.env.publicPrefixで始まらない変数かつconfig.kit.env.privatePrefix(設定されている場合)で始まる変数のみが含まれます。

$env/dynamic/privateとは異なり、このモジュールからエクスポートされる値はビルド時に静的にバンドルに注入されるため、デッドコード削除などの最適化が可能になります。

import { API_KEY } from '$env/static/private';

コード内で参照されるすべての環境変数は、アプリがデプロイされるまで値がない場合でも、(例えば.envファイルで)宣言されるべきことに注意してください:

MY_FEATURE_FLAG=""

次のようにコマンドラインから.envの値を上書きすることができます:

MY_FEATURE_FLAG="enabled" npm run dev

解説

Svelteアプリケーションで静的な(ビルド時に解決される)プライベート環境変数を扱うための$env/static/privateモジュールについて説明しています。

  1. 静的な環境変数
    • このモジュールは、.envファイルとprocess.envから読み込まれる環境変数にアクセスします
    • 値はビルド時に決定され、バンドルに直接注入されます
  2. 動的版との違い
    • $env/dynamic/privateが実行時に環境変数の値を解決するのに対し、このモジュールはビルド時に値を解決します
    • この静的な解決により、デッドコード削除などの最適化が可能になります
    • 例えば、if (API_KEY === 'xyz') { ... }のような条件分岐があった場合、ビルド時に値が分かるため、条件が満たされない場合のコードを完全に削除できます
  3. プライバシー制限
    • $env/dynamic/privateと同様に、クライアントサイドのコードではインポートできません
    • 公開プレフィックス(PUBLIC_など)で始まらない変数のみを含みます
  4. 環境変数の宣言
    • コード内で参照するすべての環境変数は、値がなくても.envファイルなどで宣言する必要があります
    • コマンドラインから環境変数を上書きすることも可能です

このモジュールは、ビルド時に決定可能で、かつプライベートに保つべき環境変数(APIキーやデータベース接続情報など)を扱う場合に適しています。

おわりに

今日は、 SvelteKitのリファレンスについて解説しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました