
こんにちは。よっしーです(^^)
今日は、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
モジュールについて説明しています。
- 静的な環境変数:
- このモジュールは、
.env
ファイルとprocess.env
から読み込まれる環境変数にアクセスします - 値はビルド時に決定され、バンドルに直接注入されます
- このモジュールは、
- 動的版との違い:
$env/dynamic/private
が実行時に環境変数の値を解決するのに対し、このモジュールはビルド時に値を解決します- この静的な解決により、デッドコード削除などの最適化が可能になります
- 例えば、
if (API_KEY === 'xyz') { ... }
のような条件分岐があった場合、ビルド時に値が分かるため、条件が満たされない場合のコードを完全に削除できます
- プライバシー制限:
$env/dynamic/private
と同様に、クライアントサイドのコードではインポートできません- 公開プレフィックス(
PUBLIC_
など)で始まらない変数のみを含みます
- 環境変数の宣言:
- コード内で参照するすべての環境変数は、値がなくても
.env
ファイルなどで宣言する必要があります - コマンドラインから環境変数を上書きすることも可能です
- コード内で参照するすべての環境変数は、値がなくても
このモジュールは、ビルド時に決定可能で、かつプライベートに保つべき環境変数(APIキーやデータベース接続情報など)を扱う場合に適しています。
おわりに
今日は、 SvelteKitのリファレンスについて解説しました。

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