Skip to content

Config配置

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

meta与config文件

Vona 从src/backend/config/config目录中加载 config 文件,支持基于meta条件的文件加载:

txt
config.ts                # 所有情况下都会加载
config.[meta].ts         # 只在指定条件下加载
config.mine.ts           # 所有情况下都会加载,但会被 git 忽略
config.[meta].mine.ts    # 只在指定条件下加载,但会被 git 忽略
  • [meta]可以是以下两个字段值的任意组合,从而支持基于多维变量的加载机制
名称类型
mode'test' |'dev' | 'prod'
flavor'normal' |'demo' |'docker' | 'ci' | keyof VonaMetaFlavorExtend

npm scripts

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

bash
$ npm run test
$ npm run dev
$ npm run build
$ npm run build:docker
json
"scripts": {
  "test": "vona :bin:test --flavor=normal",
  "dev": "vona :bin:dev --flavor=normal",
  "build": "vona :bin:build --flavor=normal",
  "build:docker": "vona :bin:build --flavor=docker", 
}

举例

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

名称
mode'dev'
flavor'normal'

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

txt
config.ts
config.normal.ts
config.normal.dev.ts
config.mine.ts
config.normal.mine.ts
config.normal.dev.mine.ts

获取全局config

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

typescript
this.app.config.server.globalPrefix
this.app.config.database.defaultClient

获取模块config

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

typescript
this.scope.config.title
this.$scope.homeIndex.config.title

覆盖模块config

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

src/backend/config/config/config.ts

typescript
// modules
config.modules = {
  'home-index': {
    title: 'Hello World!!',
  },
};

基于 MIT 许可发布