Skip to content

Env环境变量

Zova 通过process.env暴露环境变量,这些变量在构建时会被静态的替换掉

meta与.env文件

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

txt
.env                # 所有情况下都会加载
.env.mine           # 所有情况下都会加载,但会被 git 忽略
.env.[meta]         # 只在指定条件下加载
.env.[meta].mine    # 只在指定条件下加载,但会被 git 忽略
  • [meta]可以是以下三个字段值的任意组合
名称类型
mode'development' | 'production' | string;
flavor'web' | 'app' | string;
appMode'spa' | 'ssr' | 'pwa' | 'cordova' | 'capacitor' | 'electron' | 'bex' | string | undefined;

mode

bash
$ npm run dev     # mode is 'development'
$ npm run build   # mode is 'production'

flavor

可以通过命令行传入 flavor 变量值,默认是app

bash
$ npm run [dev/build]                # flavor is 'app'
$ FLAVOR=app npm run [dev/build]     # flavor is 'app'
$ FLAVOR=web npm run [dev/build]     # flavor is 'web'

appMode

可以通过命令行传入 appMode 变量值,默认是spa

bash
$ npm run [dev/build]                # appMode is 'spa'
$ APPMODE=spa npm run [dev/build]    # appMode is 'spa'
$ APPMODE=ssr npm run [dev/build]    # appMode is 'ssr'

举例

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

名称
mode'development'
flavor'app'
appMode'spa'

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

txt
.env
.env.mine
.env.app
.env.app.mine
.env.app.development
.env.app.development.mine
.env.app.development.spa
.env.app.development.spa.mine

内置环境变量

为了进一步实现开箱即用的效果,Zova 提供了若干内置的环境变量:

meta

名称说明
META_MODEmode
META_FLAVORflavor
META_APP_MODEappMode
NODE_ENV等于META_MODE

开发服务

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

应用

名称说明
APP_ROUTER_MODEVue Router: History Modes
APP_ROUTER_BASEVue Router: base
APP_PUBLIC_PATHVite: Public Base Path
APP_NAME应用名称
APP_TITLE应用标题
APP_VERSION应用版本

套件/模块

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

API

名称说明
API_BASE_URL
API_PREFIX

src/front/config/config/config.ts

typescript
export default function (_meta: ZovaConfigMeta) {
  const config: ZovaConfigOptional = {
    base: {},
    api: {
      baseURL: process.env.API_BASE_URL,
      prefix: process.env.API_PREFIX,
    },
    layout: {},
  };
  return config;
}

src/suite/a-home/modules/home-api/src/bean/store.api.ts

typescript
export class StoreApi {
  private [SymbolApi]: AxiosInstance;

  protected async __init__() {
    const baseURL = `${this.app.config.api.baseURL || ''}${this.app.config.api.prefix || ''}/`;
    this[SymbolApi] = markRaw(axios.create({ baseURL }));
  }
}

Proxy

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

Mock

参见:Mock

基于 MIT 许可发布