メインコンテンツにスキップ

複数の .env ファイルの使用

単一の .env ファイル内に各環境への異なる接続URLを保存すると、本番データベースが削除される可能性があります。

1つの解決策は、異なる環境を表す複数の .env ファイルを用意することです。実際には、これは環境ごとにファイルを作成することを意味します。

  • .env.development
  • .env.sample
警告

.env.production は、たとえ git で無視されていても、本番環境の認証情報をローカルに保存することは推奨されないため、上記のリストから省略されています。

次に、dotenv-cliのようなパッケージを使用すると、作業中の環境に適した接続URLをロードできます。

複数の .env ファイルの設定

このガイドの目的のために、アプリケーションの開発中に使用する専用の開発データベースがあることを前提としています。

  1. .env ファイルの名前を .env.development に変更します
.env.development
DATABASE_URL="postgresql://prisma:prisma@localhost:5433/dev"
  1. 新しい .env.sample ファイルを作成し、データベース名を sample (または任意の名前) に変更します
.env.sample
DATABASE_URL="postgresql://prisma:prisma@localhost:5433/sample"
  1. dotenv-cliをインストールします

Prisma ORMとJestがどの .env ファイルを使用するかを知るためには、package.json のスクリプトを変更して、dotenv パッケージを含めて呼び出し、どのコマンドを実行しているか、およびどの環境で実行したいかに応じて使用するファイルを指定します。

情報

テストと移行を実行しているトップレベルのスクリプトには、その前に dotenv コマンドが必要です。これにより、.env.sample からの環境変数が、Jestを含むすべてのコマンドに渡されるようになります。

異なる環境での移行の実行

dotenv-cli パッケージを使用して、移行の実行時にPrisma ORMが使用する環境ファイルを指定できます。

以下のスクリプトは、dotenv-cli を使用して、.env.sample 環境ファイル (DATABASE_URL 接続文字列を保持) をPrisma ORM移行スクリプトに渡します。

移行スクリプト

package.json
  "scripts": {
"migrate:postgres": "dotenv -e .env.sample -- npx prisma migrate deploy",
},

異なる環境でのテストの実行

テストを実行する場合は、Prisma クライアントをモック化することをお勧めします。そうすることで、Jestにテスト実行時にどの環境を使用するかを伝える必要があります。

デフォルトでは、Prisma クライアントはプロジェクトのルートにあるデフォルトの .env ファイルで指定された環境を使用します。

テストデータベースを指定するために個別の .env.sample ファイルを作成した場合、この環境をJestに渡す必要があります。

以下のスクリプトは、dotenv-cli を使用して、.env.sample 環境ファイル (DATABASE_URL 接続文字列を保持) をJestに渡します。

テストスクリプト

package.json
  "scripts": {
"test": "dotenv -e .env.sample -- jest -i"
},