.envファイルの管理と変数の設定
Prisma ORMは、prisma init
を使用したプロジェクトの初期化時に、.env
ファイルを自動的に作成します。このファイルの使用に限定されることはなく、その他のオプションには以下のようなものがあります。
.env
ファイルを使用せず、Prisma ORMがシステム環境変数を直接使用するようにする- Prisma CLIがデフォルトでチェックしない場所から
.env
ファイルを使用する - 複数の
.env
ファイルを使用する
システム環境を直接使用する
Prisma ORMは、環境変数を検索する際にシステムの環境から読み取るため、.env
の使用を完全にスキップし、ローカルシステムで手動で作成することができます。
以下の例では、データベース接続URLによく使用されるDATABASE_URL
環境変数を設定する例を使用します。
Mac/Linuxシステムで環境変数を手動で設定する
Unixマシン(Mac/Linux)のターミナルから、変数をキーと値のペアとしてエクスポートします。
export DATABASE_URL=postgresql://test:test@localhost:5432/test?schema=public
次に、printenv
を使用して正常に設定されていることを確認します。
printenv DATABASE_URL
postgresql://test:test@localhost:5432/test?schema=public
Windowsシステムで環境変数を手動で設定する
以下の例は、コマンドプロンプト(cmd.exe
)とPowerShellの両方を使用して、現在のユーザーの環境変数を設定する方法を示しています(どちらを使用するかは好みによります)。
- コマンドプロンプト
- PowerShell
set DATABASE_URL="postgresql://test:test@localhost:5432/test?schema=public"
[Environment]::SetEnvironmentVariable("DATABASE_URL", "postgresql://test:test@localhost:5432/test?schema=public")
次に、正常に設定されていることを確認します。
- コマンドプロンプト
- PowerShell
set DATABASE_URL
Get-ChildItem Env:DATABASE_URL
.env
ファイルを手動で管理する
dotenv-cli
およびdotenv
パッケージは、.env
ファイルを手動で管理したい場合に利用できます。
これにより、次のことが可能になります。
- 複数の
.env
ファイルを使用する - Prisma CLIがデフォルトでチェックしない場所から
.env
ファイルを使用する
コマンドライン経由でdotenv-cli
を使用する
以下の手順は、Prisma ORMによって作成されたデフォルトの環境変数を含むファイルとは別のファイルを使用するために、dotenv-cli
パッケージを使用する方法を示しています。これは、イントロスペクションを実行するために使用されます。
-
dotenv-cli
をインストールします。npm install -g dotenv-cli
-
プロジェクトのルートフォルダに、たとえば
.env3
のようなファイルを作成します。 -
.env3
ファイルを使用するには、任意のPrisma ORMコマンドを実行する際にdotenv
を使用し、どの.env
ファイルを使用するかを指定できます。次の例では、.env3
という名前のファイルを使用します。dotenv -e .env3 -- npx prisma db pull
注:dotenvは、デフォルトではフラグをPrisma ORMコマンドに渡しません。このため、コマンドには
prisma
の前に2つのダッシュ--
が含まれており、--force
、--schema
、または--preview-feature
のようなフラグを使用できます。
アプリケーションコード経由でdotenv
を使用する
以下の手順は、プロジェクトのコードで別の環境ファイルを参照するために、dotenv
パッケージを使用する方法を示しています。
-
dotenv
をプロジェクトに追加します。npm install dotenv
-
プロジェクトのルートフォルダに、たとえば
.env3
のようなファイルを作成します。 -
.env3
ファイルを使用するには、プロジェクトのエントリーファイルの先頭にdotenv
への参照を含めます。import { config } from 'dotenv'
config({ path: '.env3' })