環境変数
Astroは環境変数に関するViteの組み込みのサポートを利用しています。環境変数を扱うためにViteが備える任意の方式を使用できます。
サーバ側のコードでは すべて の環境変数が使えますが、クライアント側のコードではセキュリティのためにPUBLIC_
というプレフィックスを持つ環境変数のみが使えることに注意してください。
この例では、PUBLIC_ANYBODY
(import.meta.env.PUBLIC_ANYBODY
でアクセス可能)はサーバサイドでもクライアントサイドでも利用でき、SECRET_PASSWORD
(import.meta.env.SECRET_PASSWORD
でアクセス可能)はサーバサイドでのみ利用できます。
.env
ファイルは設定ファイルの中では読み込まれません。
デフォルト環境変数
セクションタイトル: デフォルト環境変数Astroでは、いくつかの環境変数をすぐに利用できます。
import.meta.env.MODE
: サイトが動作しているモードです。これはastro dev
を実行している場合はdevelopment
で、astro build
を実行している場合はproduction
になります。import.meta.env.PROD
: あなたのサイトが本番環境で動作している場合はtrue
となり、その他の場合はfalse
となります。import.meta.env.DEV
: あなたのサイトが開発環境で動作している場合はtrue
となり、その他の場合はfalse
となります。常にimport.meta.env.PROD
の反対となります。import.meta.env.BASE_URL
: あなたのサイトの配信元のベースURLです。これは、base
オプションによって決まります。import.meta.env.SITE
: プロジェクトのastro.config
で指定されたsite
オプションがセットされます。import.meta.env.ASSETS_PREFIX
:build.assetsPrefix
設定オプションが設定されている場合に、Astroが生成するアセットリンクに付加されるプレフィックスです。Astroが関与しないアセットリンクを作成するために使用できます。
他の環境変数と同様に使用します。
環境変数を設定する
セクションタイトル: 環境変数を設定する.env
ファイル
セクションタイトル: .envファイル環境変数は、プロジェクトディレクトリの.env
ファイルから読み込めます。
また、.env.production
や.env.development
のように、ファイル名にモード(production
またはdevelopment
)を付けることもできます。この場合、環境変数はそのモードでのみ有効になります。
プロジェクトディレクトリに.env
ファイルを作成し、そこにいくつかの変数を追加するだけです。
.env
ファイルについてさらに知りたい場合は、Viteのドキュメントを参照してください。
CLIの利用
セクションタイトル: CLIの利用プロジェクトの実行時に環境変数を追加することも可能です。
このようにセットされた変数は、クライアントサイドも含め、プロジェクトの任意の箇所から利用可能となります。
環境変数を取得する
セクションタイトル: 環境変数を取得するViteではprocess.env
の代わりに、ES2020で追加されたimport.meta
機能を使用したimport.meta.env
を使用します。
例えば、環境変数PUBLIC_POKEAPI
を取得するには、import.meta.env.PUBLIC_POKEAPI
を使用します。
Viteはimport.meta.env
を静的に置き換えるので、import.meta.env[key]
のような動的なキーでアクセスすることはできません。
SSRを使う場合、使用するSSRアダプターによって実行時に環境変数にアクセスできます。ほとんどのアダプターではprocess.env
から環境変数にアクセスできますが、DenoアダプターではDeno.env.get()
を使用する必要があります。Cloudflareは独自の方法 (EN)で環境変数を処理します。Astroはサーバーの環境変数をチェックし、存在しない場合は.env
ファイルを探します。
TypeScriptのインテリセンス
セクションタイトル: TypeScriptのインテリセンスデフォルトで、Viteはvite/client.d.ts
の中でimport.meta.env
の型定義を提供します。
.env.[mode]
ファイルではより多くのカスタム環境変数を定義できますが、PUBLIC_
をプレフィックスとするユーザーが定義した環境変数のTypeScriptインテリセンスを取得したいと思うかもしれません。
これを実現するには、src/
にenv.d.ts
を作成し、ImportMetaEnv
を以下のように設定します。