Nuxt Nation カンファレンスが開催されます。11月12日~13日にご参加ください。

.env

.envファイルは、ビルド時/開発時の環境変数を指定します。
このファイルは、リポジトリにシークレットをプッシュしないように、.gitignoreファイルに追加する必要があります。

開発、ビルド、生成時

Nuxt CLIは、開発モード、およびnuxi buildおよびnuxi generateを実行する際に、組み込みのdotenvをサポートしています。

プロセス環境変数に加えて、プロジェクトのルートディレクトリに.envファイルがある場合、それは開発時、ビルド時、および生成時に自動的にロードされます。そこに設定された環境変数は、nuxt.configファイルとモジュール内でアクセスできるようになります。

.env
MY_ENV_VARIABLE=hello
.envから変数を削除したり、.envファイルを完全に削除したりしても、すでに設定されている値はunsetされないことに注意してください。

カスタムファイル

.env.local.env.productionなど、別のファイルを使用したい場合は、nuxiを使用する際に--dotenvフラグを渡すことでそれを行うことができます。

ターミナル
npx nuxi dev --dotenv .env.local

開発モードで.envを更新すると、Nuxtインスタンスが自動的に再起動され、新しい値がprocess.envに適用されます。

アプリケーションコードでは、プレーンな環境変数ではなく、ランタイム構成を使用する必要があります。

本番環境

サーバーがビルドされた後、サーバーを実行するときに環境変数を設定する責任があります。

この時点では、.envファイルは読み込まれません。これを行う方法は環境ごとに異なります。

この設計上の決定は、サーバーレスプラットフォームやCloudflare Workersのようなエッジネットワークなど、従来型のファイルシステムが利用できない可能性のあるさまざまなデプロイ環境間で互換性を確保するために行われました。

.envファイルは本番環境では使用されないため、ホスティング環境が提供するツールと方法を使用して環境変数を明示的に設定する必要があります。一般的なアプローチをいくつか示します。

  • ターミナルを使用して、環境変数を引数として渡すことができます
    $ DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs
  • .bashrcまたは.profileのようなシェル設定ファイルに環境変数を設定できます。
  • Vercel、Netlify、AWSなどの多くのクラウドサービスプロバイダーは、ダッシュボード、CLIツール、または構成ファイルを介して環境変数を設定するためのインターフェースを提供しています。

本番環境のプレビュー

ローカル本番環境のプレビューのためには、nuxi previewを使用することをお勧めします。このコマンドを使用すると、便宜上.envファイルがprocess.envにロードされるためです。このコマンドを使用するには、パッケージディレクトリに依存関係がインストールされている必要があることに注意してください。

または、ターミナルを使用して、環境変数を引数として渡すこともできます。たとえば、LinuxまたはmacOSでは

ターミナル
DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs

完全に静的なサイトの場合、プロジェクトがプリレンダリングされた後でランタイム構成を設定することはできないことに注意してください。

詳しくは、ドキュメント > ガイド > さらに詳しく > ランタイム構成をご覧ください。
ビルド時に設定された環境変数を使用したいが、後でこれらの変数を更新することを気にしない(またはアプリでリアクティブに更新する必要があるだけの場合)は、appConfigの方が適切な選択肢となる可能性があります。appConfigは、nuxt.config内(環境変数を使用)と、プロジェクト内の~/app.config.tsファイル内で定義できます。
詳しくは、ドキュメント > ガイド > ディレクトリ構造 > アプリ構成をご覧ください。