複数の .env ファイルの使用
単一の .env
ファイル内に各環境への異なる接続URLを保存すると、本番データベースが削除される可能性があります。
1つの解決策は、異なる環境を表す複数の .env
ファイルを用意することです。実際には、これは環境ごとにファイルを作成することを意味します。
.env.development
.env.sample
.env.production
は、たとえ git で無視されていても、本番環境の認証情報をローカルに保存することは推奨されないため、上記のリストから省略されています。
次に、dotenv-cli
のようなパッケージを使用すると、作業中の環境に適した接続URLをロードできます。
複数の .env
ファイルの設定
このガイドの目的のために、アプリケーションの開発中に使用する専用の開発データベースがあることを前提としています。
.env
ファイルの名前を.env.development
に変更します
DATABASE_URL="postgresql://prisma:prisma@localhost:5433/dev"
- 新しい
.env.sample
ファイルを作成し、データベース名をsample
(または任意の名前) に変更します
DATABASE_URL="postgresql://prisma:prisma@localhost:5433/sample"
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移行スクリプトに渡します。
移行スクリプト
"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に渡します。
テストスクリプト
"scripts": {
"test": "dotenv -e .env.sample -- jest -i"
},