跳至主要内容

使用多个 .env 文件

如果您在一个 .env 文件中为每个环境存储不同的连接 URL,则存在删除生产数据库的风险。

一种解决方案是拥有多个 .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 Client。这样做,您需要告诉 Jest 在运行测试时应使用哪个环境。

默认情况下,Prisma Client 将使用位于项目根目录的默认 .env 文件中指定的环境。

如果您创建了一个单独的 .env.sample 文件来指定您的测试数据库,那么需要将此环境传递给 Jest。

以下脚本使用 dotenv-cli.env.sample 环境文件(包含 DATABASE_URL 连接字符串)传递给 Jest。

测试脚本

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