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:dockerjson
"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!!',
},
};