文章目录

  • 一、为什么要配置环境变量?
  • 二、在Vite中配置环境变量
    • 1.环境变量和模式
    • 2.环境变量
    • 3.生产环境替换
    • 4.env文件
  • 总结

一、为什么要配置环境变量?

在一个产品的前端开发过程中,一般来说会经历本地开发、测试脚本、开发自测、测试环境、预上线环境,然后才能正式的发布。对应每一个环境可能都会有所差异,比如说用户访问资源权限、服务器地址、接口地址等。在各个环境切换的时候,就需要不同的配置参数,所以就可以用环境变量和模式,来方便我们管理。

二、在Vite中配置环境变量

1.环境变量和模式

因为项目使用VIte创建的,所以在配置环境变量之前我们需要查看在Vite中的环境变量和模式,官网地址

2.环境变量

Vite 在一个特殊的import.meta.env对象上暴露环境变量。这里有一些在所有情况下都可以使用的内建变量:

  • import.meta.env.MODE: {string} 应用运行的模式。

  • import.meta.env.BASE_URL: {string} 部署应用时的基本 URL。他由base配置项决定。

  • import.meta.env.PROD: {boolean} 应用是否运行在生产环境。

  • import.meta.env.DEV: {boolean} 应用是否运行在开发环境 (永远与import.meta.env.PROD相反)。

  • import.meta.env.SSR: {boolean} 应用是否运行在server上。

3.生产环境替换

在生产环境中,这些环境变量会在构建时被静态替换,因此,在引用它们时请使用完全静态的字符串。动态的 key 将无法生效。例如,动态 key 取值import.meta.env[key]是无效的。

4.env文件

在根目录下新建这两个文件

.env.dev 文件

NODE_ENV = devVITE_NAME="LJY"

.env.pro 文件

NODE_ENV = proVITE_NAME="LJY"

Vite 使用dotenv从你的环境目录中的下列文件加载额外的环境变量:

环境加载优先级

一份用于指定模式的文件(例如.env.production)会比通用形式的优先级更高(例如.env)。

另外,Vite 执行时已经存在的环境变量有最高的优先级,不会被.env类文件覆盖。例如当运行VITE_SOME_KEY=123 vite build的时候。

.env类文件会在 Vite 启动一开始时被加载,而改动会在重启服务器后生效。

加载的环境变量也会通过import.meta.env以字符串形式暴露给客户端源码。

为了防止意外地将一些环境变量泄漏到客户端,只有以VITE_为前缀的变量才会暴露给经过 vite 处理的代码。例如下面这些环境变量:

VITE_SOME_KEY=123DB_PASSWORD=foobar

只有VITE_SOME_KEY会被暴露为import.meta.env.VITE_SOME_KEY提供给客户端源码,而DB_PASSWORD则不会。

console.log(import.meta.env.VITE_SOME_KEY) // 123console.log(import.meta.env.DB_PASSWORD) // undefined

如果你想自定义 env 变量的前缀,请参阅envPrefix。

安全注意事项

如果你想要自定义 env 变量的前缀,请参阅envPrefix选项。

  • .env.*.local文件应是本地的,可以包含敏感变量。你应该将.local添加到你的.gitignore中,以避免它们被 git 检入。

  • 由于任何暴露给 Vite 源码的变量最终都将出现在客户端包中,VITE_*变量应该不包含任何敏感信息。