多环境配置
配置是我们常用的功能,而且在不同的环境,经常会使用不同的配置信息。
本篇我们来介绍 Midway 如何加载不同环境的业务 配置。
配置文件
最为简单的就是使用框架提供的业务配置文件能力。
该能力可以在所有业务代码和组件中使用,贯穿整个 Midway 生命周期。
配置文件可以以两种格式导出,对象形式 和 函数形式。
提示
经过我们的实践,对象形式 会更加的简单友好,可以规避许多错误用法。
大部分文档中我们都将以此形式进行展示。
配置文件目录
我们可以自定义一个目录,在其中放入配置文件。
比如 src/config
目录。
➜ my_midway_app tree
.
├── src
│ ├── config
│ │ ├── config.default.ts
│ │ ├── config.prod.ts
│ │ ├── config.unittest.ts
│ │ └── config.local.ts
│ ├── interface.ts
│ └── service
├── test
├── package.json
└── tsconfig.json
配置文件的名字有一些特定的约定。
config.default.ts
为默认的配置文件,所有环境都会加载这个配置文件。
其余的文件名,使用 config.环境
作为文件名,具体环境的概念请查看 运行环境。
配置不是 必选项,请酌情添加自己需要的环 境配置。
对象形式
配置文件导出的格式为 object,比如:
// src/config/config.default.ts
import { MidwayConfig } from '@midwayjs/core';
export default {
keys: '1639994056460_8009',
koa: {
port: 7001,
},
} as MidwayConfig;
函数形式
配置文件为一个带有 appInfo
参数的函数。这个函数在框架初始化时会被自动执行,将返回值合并进完整的配置对象。
// src/config/config.default.ts
import { MidwayAppInfo, MidwayConfig } from '@midwayjs/core';
export default (appInfo: MidwayAppInfo): MidwayConfig => {
return {
keys: '1639994056460_8009',
koa: {
port: 7001,
},
view: {
root: path.join(appInfo.appDir, 'view'),
},
};
}
这个函数的参数为 MidwayAppInfo
类型,值为以下内容。
appInfo | 说明 |
---|---|
pkg | package.json |
name | 应用名,同 pkg.name |
baseDir | 应用代码的 src (本地开发)或者 dist (上线后)目录 |
appDir | 应用代码的目录 |
HOME | 用户目录,如 admin 账户为 /home/admin |
root | 应用根目录,只有在 local 和 unittest 环境下为 baseDir,其他都为 HOME。 |
配置文件定义
Midway 提供了 MidwayConfig
作为统一的配置项定义,所有的组件都会将定义合并到此配置项定义中。每当一个组件被开启(在 configuration.ts
中被 imports
),MidwayConfig
就会自动包含该组件的配置定义。
为此,请尽可能使用文档推荐的格式,以达到最佳的使用效果。
每当启用一个新组件时,配置定义都会自动加入该组件的配置项,通过这个行为,也可以变相的检查是否启用了某个组件。
比如,我们启用了 view 组件的效果。
提示