一般的な.envファイルの構造
ほとんどのプロジェクトでは、様々な環境に合わせて複数の.envファイルを使用します。
- .env: すべての環境で共通して使用される基本的な環境変数
- .env.local: ローカル開発環境でのみ使用(バージョン管理から除外)
- .env.development: 開発環境で使用
- .env.development.local: 開発環境のローカル設定(バージョン管理から除外)
- .env.production: 本番環境で使用
- .env.production.local: 本番環境のローカル設定(バージョン管理から除外)
- .env.test: テスト環境で使用
.local
接尾辞が付いたファイルは、開発者個人の設定を保存し、バージョン管理から除外するのが一般的です。
一般的な優先順位
一般的に、環境変数は次の順序で適用されます(フレームワークやライブラリによって異なる場合があります):
- OS環境変数
- .env.[環境].local
- .env.[環境]
- .env.local
- .env
Next.jsでの環境変数ロードの優先順位
Next.jsは環境変数をロードする際に、次のような明確な優先順位に従います:
- .env.local: 最優先
- .env.[MODE].local: 特定環境のローカル設定
- .env.[MODE]: 特定環境の設定
- .env: デフォルト設定
Next.jsのMODE値
Next.jsで[MODE]に入れることができる値:
- production:
next start
またはnext build
実行時に自動指定 - development:
next dev
実行時に自動指定 - test:
next test
実行時に自動指定
特定の環境ファイルを強制指定する
Next.jsでビルド時にproduction以外の環境の変数を使用したい場合は、env-cmd
ライブラリを活用できます。
bash
# env-cmdのインストール
npm install env-cmd --save-dev
json
// package.json
"scripts": {
"build:dev": "env-cmd -f .env.development.local next build"
}
bash
# 実行
yarn build:dev
この方法は次のような状況で使用できます:
- ステージング環境用のビルド作成
- 開発環境設定でのテストビルド実行
- 特定の環境変数でのローカルテスト
注意事項
共通の注意事項
.local
ファイルは.gitignoreに追加してバージョン管理から除外する- 同じ変数名が複数のファイルにある場合、優先順位に従って値が決定される
- 機密情報は必ず
.local
ファイルに保存する
Next.js特有の注意事項
- ブラウザに公開する必要がある環境変数には
NEXT_PUBLIC_
接頭辞が必要 - .env.testファイルはテスト実行時にのみロードされる
- 環境変数は実行時に変更できない(ビルド時点で決定)
このように環境変数ファイルの優先順位を理解しながら、プロジェクトの状況に合わせて各環境に必要な設定を効果的に管理しましょう。