环境变量与模式

2025-07-15  本文已影响0人  5cc9c8608284

认识环境变量

以最熟悉的 import.meta.env.BASE_URL 为例:

// router/index.js
const router = createRouter({
  history: createWebHashHistory(import.meta.env.BASE_URL),
  routes: [
    // ...
  ]
})

该变量在:

Vite 其他内置环境变量:

NODE_ENV和模式

代码运行有不同的环境:

  1. 开发环境
  2. 测试环境
  3. 生产环境

不同的环境,需要不同的配置来满足需求。

例如:

数据库连接

API密钥和凭证

错误处理

如何指定代码运行的环境呢?

一般可以通过 NODE_ENV 这个环境变量,该变量可以指定代码的运行环境,比如 development、production 或 test

通过指定运行环境,从而能够:

那 Vite 中的模式又是什么呢?

一句话总结:在 Vite 中,模式是一个可以在启动时设置的属性,用来指导 Vite 如何加载 .env 文件

.env 的文件用来存放环境变量,之后在客户端源码中就可以通过 import.meta.env 来访问对应的值。

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

例如:

.env

VITE_SOME_KEY=123
DB_PASSWORD=foobar

这里只有 VITE_SOME_KEY 会暴露给客户端源码:

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

.env 文件还可以有不同的类型:

.env                # 所有情况下都会加载
.env.local          # 所有情况下都会加载,但会被 git 忽略
.env.[mode]         # 只在指定模式下加载
.env.[mode].local   # 只在指定模式下加载,但会被 git 忽略

这里的 mode 指代的就是 Vite 里面的模式。

例如,我们可以在 .env.development 和 .env.production 文件中定义不同的环境变量,在使用 Vite 启动应用的时候可以指定对应的模式加载对应的 .env 文件。

my-vite-project/
├── .env               # 默认的环境变量
├── .env.development   # 开发环境的环境变量
├── .env.production    # 生产环境的环境变量
├── src/
│   └── main.js
└── vite.config.js

.env.development

VITE_API_URL=https://dev.api.example.com
DEBUG=true

.env.production

VITE_API_URL=https://api.example.com
DEBUG=false

之后使用 Vite 启动应用的时候,就可以指定特定的模式,从而加载不同的 .env 文件

# 开发环境
vite --mode development

# 生产环境构建
vite build --mode production

思考🤔:为什么有了 NODE_DEV 还需要 mode 模式?

答案:NODE_DEV 是在 Node.js 环境中最早被支持的一个环境变量,广泛的被用于各大工具和库。而模式是特定于某个构建工具,主要就是用于更加细粒度的场景控制。也就是说,使用 mode 可以在不影响 NODE_DEV 的前提下具备更高的灵活性。

上一篇 下一篇

猜你喜欢

热点阅读