# 配置

# 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 配置为准。