文章目录
- 一、为什么要配置环境变量?
-
二、在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 = dev VITE_NAME="LJY"
.env.pro 文件
NODE_ENV = pro VITE_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=123
DB_PASSWORD=foobar
只有 VITE_SOME_KEY
会被暴露为 import.meta.env.VITE_SOME_KEY
提供给客户端源码,而 DB_PASSWORD
则不会。
console.log(import.meta.env.VITE_SOME_KEY) // 123
console.log(import.meta.env.DB_PASSWORD) // undefined
如果你想自定义 env 变量的前缀,请参阅 envPrefix。
安全注意事项
如果你想要自定义 env 变量的前缀,请参阅 envPrefix 选项。
.env.*.local
文件应是本地的,可以包含敏感变量。你应该将.local
添加到你的.gitignore
中,以避免它们被 git 检入。由于任何暴露给 Vite 源码的变量最终都将出现在客户端包中,
VITE_*
变量应该不包含任何敏感信息。