Next.js
2021.6.21
Next.jsまとめシリーズ。
アウトプットとしてまとめていきます。
ここでの環境変数とは、アプリケーション内で利用できる変数のこと。
例えばAPIによって外部アプリケーションからデータ取得する際に必要になるAPIキーなど、環境変数として定義します。
Next.jsでは、
の3つの環境をサポートしています。
.env : すべての環境に対する環境変数(デフォルト値)
.env.local: リポジトリに含めてはいけない環境変数を書く(前述のAPIキーなど外部に露出したら困る秘密情報)。すべての環境の環境変数を上書きする。
.env.[environment] : 特定の環境に対する環境変数(デフォルト値)。.env.development など
.env.[environment].local : 特定環境のローカル用環境変数。特定の環境に対する環境変数を上書き。.env.development.local など
.env.developmentと.env.development.localは、next devコマンド実行時に使用されます。
.env.productionと.env.production.localは、next buildとnext startコマンド実行時に使用されます。
.env.testと.env.test.localは、テスト目的に特定の環境変数を設定する必要がある場合に作成します。また、テスト環境においては**.env.local**ファイルはロードされないため注意が必要です。
.env.[environment].local > .env.local > .env.[environment] > .env
の順で優先されます。
ルートに.env.localファイルを作成し、変数を定義します。
API_KEY='my-secret-api-key'
下記のように、process.env.XXXXXと書くことで参照することができます。
export async function getStaticProps() { const db = await myDB(process.env.API_KEY) // ... }
クライアント側で使う環境変数にはNEXT_PUBLIC_ をつけて定義することで、ブラウザに送信されるJavaScript内に環境変数の値がインライン化され、クライアント側で使用できます。
NEXT_PUBLIC_ID=advresgfsl
export default function Page(){ const { NEXT_PUBLIC_ID } = process.env console.log(NEXT_PUBLIC_ID) // advresgfsl // ...
当然ですが、公開したくない秘密情報についてはNEXT_PUBLIC_ をつけず定義します。
.env.lovalと.env.[environment].localについては秘密情報を定義するので、.gitignoreファイルに追加しておきます。
公式ドキュメントによると、その他.envファイルについてはリポジトリに含めてデフォルト値設定のため使用することが推奨されています。
Note: .env, .env.development, and .env.production files should be included in your repository as they define defaults. .env*.local should be added to .gitignore, as those files are intended to be ignored. .env.local is where secrets can be stored. 公式Docより
Megumi Tanimoto
Editor
フロントエンドエンジニア1年目。
エンジニアライフ、技術的なアウトプットを中心に発信します。