Web前端项目中配置环境变量的几种方式

489 阅读2分钟

在构建 Web 前端项目过程中,我们经常需要定义和使用环境变量。下面我将介绍一些常见的解决方案。

生产环境/CI 构建阶段

在这个阶段,我们通常不需要过多关注环境变量的配置,只需遵循平台提供的规则即可,因为环境变量通常在平台上手动设置。 例如,在 Vercel ↗ 平台上:

80205101438ebc669252f131b5b896a.png 因此,这些环境变量不会出现在我们项目的代码中。

开发阶段

如果你当前使用的框架已经提供了环境变量的配置方式,通常我们也不需要过多关注,只需遵循框架提供的规则即可。

如果框架没有提供这样的配置方式,我们可以考虑市场上已有的一些解决方案。

dotenv ↗

只需将 .env 文件放在项目的根目录下:

S3_BUCKET="我的存储桶"
SECRET_KEY="我的秘钥"

然后在应用程序的尽早位置导入并配置 dotenv

require('dotenv').config()
console.log(process.env) // 在确认它起作用后可以移除这行代码

如果你不想在源代码中添加 require 代码,可以使用以下命令运行脚本:

node -r dotenv/config your_script.js

现在它应该可以工作了。

另外,出于安全性或团队成员配置的差异等原因,建议将 .env 文件添加到 .gitignore 中。

为了给新开发者提供更好的指导,你可以在 .gitignore 之外添加一个名为 .env.example 的文件,内容如下:

# 为了运行该项目,你需要在根目录下创建一个 .env 文件,并提供以下环境变量。
S3_BUCKET="你的存储桶"
SECRET_KEY="你的秘钥"

cross-env ↗

在过去,还有一个受欢迎的包叫做 cross-env。但现在,它已经被归档了。

我认为对于新用户来说,这是一个非常直观的解决方案。

{
  "scripts": {
    "build": "cross-env S3_BUCKET=\"我的存储桶\" npm run start"
  }
}

只是有一些问题:

  • 如果有很多环境变量,这种方式会变得不太友好。
  • 如果不想与他人共享这些变量,需要在提交之前将它们移除。

结论

对我来说,目前我更倾向于使用 dotenv

原文

源代码