# 配置
# 1. 配置文件
配置文件分三种类型:普通配置、插件配置、中间件配置,每种类型配置又都区分默认配置和根据环境变量加载的配置。
常见的 NODE_ENV 环境变量:
- development 开发环境
- qa 测试环境
- pre 预发环境
- perf 性能压测环境
- prod 生产环境
# 2. 普通配置
普通配置分两种类型:
- 默认配置文件 config.default.js
- 跟 env 环境相关的配置文件 config.${NODE_ENV}.js
# 3. 中间件配置
中间件配置分两种类型:
- 默认中间件配置文件 middleware.default.js
- 根据环境区分的配置文件 middleware.${env}.js
const path = require('path');
module.exports = {
'astroboy-static': {
priority: 3,
enable: true,
options: {
root: path.resolve('/tmp/static')
}
}
}
配置参数说明:
- priority {Number} 中间件加载顺序权重,1 ~ 99 内核框架级中间件,100 ~ 199 自定义框架级中间件,200 ~ 299 项目级中间件
- enable {Boolean} 是否开启中间件
- options {Object} 中间件配置信息,应用启动加载中间件的时候会将该参数传递给中间件。
- match {String/RegExp/Function/Array} 设置只有符合某些规则的请求才会经过这个中间件
- ignore {String/RegExp/Function/Array} 设置符合某些规则的请求不经过这个中间件
注意:match 和 ignore 支持的参数都一样,只是作用完全相反,match 和 ignore 不允许同时配置。
match 和 ignore 支持的配置方式:
- 字符串:当参数为字符串类型时,配置的是一个 URL 的路径前缀,所有以配置的字符串作为前缀的 URL 都会匹配上。
- 正则表达式:当参数为正则时,直接匹配满足正则验证的 URL 的路径;
- 函数:当参数为一个函数时,会将请求上下文 ctx 传递给这个函数,最终取函数返回的结果(true / false)来判断是否匹配。
- 数组,每个元素可以是上面三种类型。
# 4. 插件配置
插件配置分两种类型:
- 默认配置文件 plugin.default.js
- 根据环境区分的配置文件 plugin.${env}.js
const path = require('path');
module.exports = {
'astroboy-body': {
enable: true,
path: path.resolve(__dirname, '../plugins/astroboy-body')
},
'astroboy-meta': {
enable: true,
package: 'astroboy-meta'
}
};
配置参数说明:
- enable {Boolean} 是否开启插件
- package {String} npm 包名称,通过 npm 包的形式引入插件
- path {String} 插件绝对路径,跟 package 配置互斥
注意: package 和 path 配置互斥,如果两个都配置了,则以 path 配置为准。