環境変数
PUBLIC_ 接頭辞の env だけがクライアントに届く。シークレットはサーバーの env から読む。
Vantage は、環境変数をクライアントに漏らさないことを既定にしています。境界は接頭辞で決まります。
クライアントに届くのは PUBLIC_ だけ
PUBLIC_ で始まる変数だけがクライアントバンドルに入り、import.meta.env から読めます。
// クライアントコード
const analyticsId = import.meta.env.PUBLIC_ANALYTICS_ID;
クライアントで参照できるのは次だけです。
PUBLIC_*(あなたが定義した公開値)MODE/DEV/PROD/SSR/BASE_URL(Vite の標準)
シークレットはサーバーの env から
API キーやトークンなどの秘密情報は、クライアントに出さずサーバーの ApiContext.env から
読みます。これらは接頭辞を付けません。
// server/api/report.ts
import type { ApiContext } from "@squadbase/vantage/server";
export async function GET({ env }: ApiContext) {
const apiKey = env.SECRET_API_KEY; // クライアントには決して届かない
// …外部サービスを呼ぶ
return Response.json({ ok: true });
}
.env の例
# .env
PUBLIC_ANALYTICS_ID=UA-XXXX # クライアントに届く
SECRET_API_KEY=sk_live_xxx # サーバー専用(ApiContext.env)
デプロイで使う env
フロントとサーバーを別オリジンにデプロイするときは、次の env が関わります。
| 変数 | 側 | 役割 |
|---|---|---|
PUBLIC_API_BASE_URL |
クライアント(公開) | クライアントが /api を呼ぶベースURL。--api-base-url でも上書き可 |
CORS_ORIGIN |
サーバー | /api に対して許可するオリジン。未設定なら CORS 無効 |
CORS_CREDENTIALS |
サーバー | true で資格情報(Cookie 等)を許可 |
使い方はビルドとデプロイで詳しく解説します。