unibest/docs/base/12-env.md

90 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 环境变量
主要介绍 `vite` 环境变量和 `uni` 环境变量。
## `vite` 环境变量
`Vite` 在一个特殊的 `import.meta.env` 对象上暴露环境变量。环境变量定义在 `.env` 文件里。
### .env 文件
创建环境文件:
```yml
.env # 所有情况下都会加载
.env.local # 所有情况下都会加载,但会被 git 忽略
.env.[mode] # 只在指定模式下加载
.env.[mode].local # 只在指定模式下加载,但会被 git 忽略
# 注意 .env.local 无法覆盖 .env.[mode]
```
环境文件只包含环境变量的 `键值对`
```yml
VITE_SOME_KEY=123
DB_PASSWORD=foobar
```
> 为了防止意外地将一些环境变量泄漏到客户端,只有以 `VITE_` 为前缀的变量才会暴露给经过 `vite` 处理的代码。
如上配置,只有 `VITE_SOME_KEY` 会被暴露为 `import.meta.env.VITE_SOME_KEY` 提供给客户端源码,而 `DB_PASSWORD` 则不会。
```js
console.log(import.meta.env.VITE_SOME_KEY) // "123"
console.log(import.meta.env.DB_PASSWORD) // undefined
```
### mode 模式
Vite 允许你为不同的构建环境指定不同的模式。通常在 `npm scripts` 里面指定 `mode` 参数:
```sh
"scripts": {
"dev": "uni",
"dev-dev": "uni --mode development",
"dev-test": "uni --mode test",
"dev-prod": "uni --mode production",
}
```
运行不同模式的脚本时,`Vite` 会自动加载对应的 `.env.[mode]` 文件,就能获取到不同的环境变量。
`Vite` 运行 `dev` 时默认会加载 `.env.development` 文件(若有)。
`Vite` 运行 `build` 时默认会加载 `.env.production` 文件(若有)。
故,如上配置 `pnpm dev``pnpm dev-dev` 是一个效果。
## `uni` 环境变量
`uni` 环境变量这里指运行 `uni` 的平台变量,通过 `vite``define` 配置可以暴露出来。
```
define: {
__UNI_PLATFORM__: JSON.stringify(UNI_PLATFORM),
},
```
代码里面使用:
```js
export const platform = __UNI_PLATFORM__
export const isH5 = __UNI_PLATFORM__ === 'h5'
export const isApp = __UNI_PLATFORM__ === 'app'
export const isMp = __UNI_PLATFORM__.startsWith('mp-')
const PLATFORM = {
platform,
isH5,
isApp,
isMp,
}
export default PLATFORM
```
## 总结
本文描写了 `vite` 环境变量和 `uni` 环境变量如何配置和使用。
全文完~