Skip to content

Config配置

meta与config文件

Zova 从src/front/config/config目录中加载 config 文件。同样支持基于meta条件的文件加载,具体规则参见:meta与.env文件

举例

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

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

系统就会自动加载下列文件中的 Config 配置,并进行合并:

txt
config.ts
config.mine.ts
config.app.ts
config.app.mine.ts
config.app.development.ts
config.app.development.mine.ts
config.app.development.spa.ts
config.app.development.spa.mine.ts

访问全局config

在任何 bean 实例中可以直接通过this.app.config访问全局 config 对象

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 }));
  }
}

访问模块config

模块可以单独提供自己的 config 配置,可以通过 Scope 实例获取模块的 config 配置,参见:Config配置

覆盖模块config

可以使用项目级别的 config 配置覆盖模块级别的 config 配置,参见:Config配置

env与config的关系

有些变量同时存在于 env 和 config 中,基本逻辑如下:

  1. 在 env 中配置变量的值
  2. 让 config 中的值等于 env 中的值
  3. 在代码中优先通过 config 来访问变量的值
  4. 如果需要使用构建时 tree shaking 的能力,就通过process.env.xxx来访问变量的值

变量对照表

env中的变量config中的变量
META_MODEmeta.mode
META_FLAVORmeta.flavor
META_APP_MODEmeta.appMode
APP_ROUTER_MODEenv.appRouterMode
APP_ROUTER_BASEenv.appRouterBase
APP_PUBLIC_PATHenv.appPublicPath
APP_NAMEenv.appName
APP_TITLEenv.appTitle
APP_VERSIONenv.appVersion
API_BASE_URLapi.baseURL
API_PREFIXapi.prefix

基于 MIT 许可发布