Skip to content

Env环境变量

Zova 基于多维变量加载环境文件,从而提供更加灵活的配置机制,支持更复杂的业务场景

meta与.env文件

Zova 使用dotenvenv目录中加载下列文件中的环境变量:

txt
.env                # 所有情况下都会加载
.env.[meta]         # 只在指定条件下加载
.env.mine           # 所有情况下都会加载,但会被 git 忽略
.env.[meta].mine    # 只在指定条件下加载,但会被 git 忽略
  • [meta]可以是以下三个变量值的任意组合
名称类型
mode'development' | 'production'
appMode'spa' | 'ssr'
flavor'web' | 'admin'

npm scripts

与多维变量相对应,命令行与脚本对应关系如下:

bash
$ npm run dev:ssr:admin
$ npm run build:ssr:admin
json
"scripts": {
  "dev": "npm run dev:ssr:admin",
  "build": "npm run build:ssr:admin",
  "preview": "npm run preview:ssr",
  "dev:ssr:admin": "npm run prerun && quasar dev --mode ssr --flavor admin",
  "build:ssr:admin": "npm run prerun && quasar build --mode ssr --flavor admin",
  "preview:ssr": "concurrently \"node ./dist-mock/index.js\" \"node ./dist/ssr/index.js\"",
},

举例

在命令行执行npm run dev,那么,对应的 meta 变量值是:

名称
mode'development'
appMode'ssr'
flavor'admin'

系统就会自动加载下列文件中的环境变量,并进行合并:

txt
.env
.env.ssr
.env.ssr.admin
.env.ssr.admin.development
.env.mine
.env.ssr.mine
.env.ssr.admin.mine
.env.ssr.admin.development.mine

Tree-shaking

ZovaJS 仅针对以下环境变量支持 build 时的 Tree-shaking 能力:

名称说明
META_MODE运行环境
META_APP_MODE应用模式
META_FLAVORFlavor
NODE_ENV= process.env.META_MODE
DEV= process.env.META_MODE === 'development'
PROD= process.env.META_MODE === 'production'
SSR= process.env.META_APP_MODE === 'ssr'
CLIENT是否是客户端
SERVER是否是服务端

比如:

typescript
if (process.env.DEV) {
  console.log('for development');
}

在进行 build 时,会自动转化为:

typescript
if (false) {
  console.log('for development');
}

由于条件为 false,从而进行 Tree-shaking

获取环境变量

1. process.env

对于支持 Tree-shaking 能力的环境变量,通过process.env来获取

typescript
process.env.META_MODE;
process.env.META_APP_MODE;
process.env.META_FLAVOR;
process.env.NODE_ENV;
process.env.DEV;
process.env.PROD;
process.env.SSR;
process.env.CLIENT;
process.env.SERVER;
  • process.env.NODE_ENV: 仅用于兼容 Nodejs 生态,优先使用process.env.META_MODE

2. sys.env

对于不支持 Tree-shaking 能力的环境变量,通过sys.env来获取

typescript
this.sys.env.APP_NAME;
this.sys.env.APP_TITLE;
this.sys.env.APP_PUBLIC_PATH;

内置环境变量

ZovaJS 提供了若干内置的环境变量:

meta

名称说明
META_MODE运行环境
META_APP_MODE应用模式
META_FLAVORFlavor

app

名称说明
APP_NAME应用名称
APP_TITLE应用标题
APP_DESCRIPTION应用描述
APP_VERSION应用版本
APP_META_VIEWPORThtml.head.meta.viewport
APP_PUBLIC_PATHVite: Public Base Path
APP_LOCALE_DEFAULT缺省Locale值

router

名称说明
ROUTER_MODEVue Router: History Modes

dev server

名称说明
DEV_SERVER_HOSTNAME开发服务的host Vite: server.host
DEV_SERVER_PORT开发服务的port

project

名称说明
PROJECT_DISABLED_MODULES禁用的模块清单
PROJECT_DISABLED_SUITES禁用的套件清单

构建

名称说明
BUILD_OUTDIR指定输出目录
BUILD_MINIFY是否最小化
BUILD_SOURCEMAP是否生成Sourcemap
BUILD_ANALYZE是否显示分析信息

API

名称说明
API_BASE_URL
API_PREFIX
API_JWT是否启用JWT

PINIA

名称说明
PINIA_ENABLED是否启用Pinia

Proxy

名称说明
PROXY_API_ENABLED是否启用proxy:Vite: server.proxy
PROXY_API_BASE_URLproxy target
PROXY_API_PREFIXproxy key

SSR

参见:SSR

Mock

参见:Mock

动态环境变量

以下是根据运行环境动态设定的环境变量:

名称说明
SSR是否是SSR模式
DEV是否是开发环境
PROD是否是生产环境
CLIENT是否是客户端
SERVER是否是服务端

基于 MIT 许可发布