Vite 在一个特殊的 import.<wbr style="box-sizing: border-box;">meta.env
对象上暴露环境变量。这里有一些普遍适用的内建变量:
import.<wbr style="box-sizing: border-box;">meta.env.MODE
:string
应用运行基于的 模式。import.<wbr style="box-sizing: border-box;">meta.env.BASE_URL
:string
应用正被部署在的 base URL。它由base
配置项 决定。import.<wbr style="box-sizing: border-box;">meta.env.PROD
:boolean
应用是否运行在生产环境import.<wbr style="box-sizing: border-box;">meta.env.DEV
:boolean
应用是否运行在开发环境 (永远与import.<wbr style="box-sizing: border-box;">meta.env.PROD
相反)
#生产环境替换
在生产环境中,这些环境变量会在构建时被静态替换,因此请在引用它们时使用完全静态的字符串。动态的 key 将无法生效。例如,动态 key 取值 import.<wbr style="box-sizing: border-box;">meta.env[key]
是无效的。
它还将替换出现在 JavaScript 和 Vue 模板中的字符串。这应该是比较罕见的情况,但它可能是不小心为之。有一些方法可以避免这个问题:
对于 JavaScript 字符串,你可以在相应位置上使用一个 unicode 序列值,例如:
'import.<wbr style="box-sizing: border-box;">meta\u200b.env.MODE'
。对于 Vue 模板或其他编译到 JavaScript 字符串的 HTML,你可以使用
<wbr>
标签,例如:import.<wbr style="box-sizing: border-box;">meta.<wbr>env.MODE
。
.env 文件
Vite 使用 dotenv 在你的项目根目录下从以下文件加载额外的环境变量:
.env # 所有情况下都会加载
.env.local # 所有情况下都会加载,但会被 git 忽略
.env.[mode] # 只在指定模式下加载
.env.[mode].local # 只在指定模式下加载,但会被 git 忽略
为了防止意外地将一些环境变量泄漏到客户端,只有以 VITE_ 为前缀的变量才会暴露给经过 vite 处理的代码。例如下面这个文件中:
DB_PASSWORD=foobar
VITE_SOME_KEY=123
只有 VITE_SOME_KEY 会被暴露为 import.meta.env.VITE_SOME_KEY 提供给客户端源码,而 DB_PASSWORD 则不会。