Skip to content

Commit 309f778

Browse files
committed
docs(config): clarify environment variable loading in Vite config
1 parent fd8728a commit 309f778

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

config/index.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,11 @@ export default defineConfig(async ({ command, mode }) => {
101101

102102
## 環境変数を設定に使用する
103103

104-
通常通り、環境変数は `process.env` から取得することができます
104+
設定自体が評価されている間に利用可能な環境変数は、現在のプロセス環境(`process.env`)に既に存在するもののみです。Vite は意図的に `.env*` ファイルの読み込みをユーザー設定が解決される****まで遅らせています。これは、読み込むファイルのセットが [`root`](/guide/#index-html-and-project-root)[`envDir`](/config/shared-options.md#envdir) などの設定オプション、そして最終的な `mode` に依存するためです
105105

106-
Vite はデフォルトでは `.env` ファイルをロードしないことに注意してください。ロードするファイルは Vite の設定を評価した後に決定されるからです。例えば、 `root``envDir` オプションはロードの動作に影響します。しかし必要に応じて、エクスポートされた `loadEnv` ヘルパーを使用して、特定の `.env` ファイルをロードすることができます。
106+
つまり、`.env``.env.local``.env.[mode]``.env.[mode].local` で定義された変数は、`vite.config.*` の実行中に `process.env` に自動的に注入されることは**ありません**。これは[環境変数とモード](/guide/env-and-mode.html)で説明されているとおり、これらの変数は後で自動的に読み込まれ、(デフォルトの `VITE_` プレフィックスフィルターを使用して)`import.meta.env` を通じてアプリケーションコードに公開されます。したがって、`.env*` ファイルからアプリに値を渡すだけであれば、設定内で何かを呼び出す必要はありません。
107+
108+
しかし、`.env*` ファイルの値が設定自体に影響を与える必要がある場合(例えば `server.port` の設定、プラグインの条件付き有効化、`define` 置換の計算など)、エクスポートされた [`loadEnv`](/guide/api-javascript.html#loadenv) ヘルパーを使用して手動で読み込めます。
107109

108110
```js twoslash
109111
import { defineConfig, loadEnv } from 'vite'
@@ -114,10 +116,14 @@ export default defineConfig(({ mode }) => {
114116
// 第 3 引数に '' を設定します
115117
const env = loadEnv(mode, process.cwd(), '')
116118
return {
117-
// vite の設定
118119
define: {
120+
// 環境変数から派生した明示的なアプリレベル定数を提供します。
119121
__APP_ENV__: JSON.stringify(env.APP_ENV),
120122
},
123+
// 例:環境変数を使用して開発サーバーのポートを条件付きで設定します。
124+
server: {
125+
port: env.APP_PORT ? Number(env.APP_PORT) : 5173,
126+
},
121127
}
122128
})
123129
```

0 commit comments

Comments
 (0)