envParser 调用方法

envParser 解析 node 环境变量,并为对应的系统配置进行赋值。它接收四个参数,分别是

  • configJSON:模块的配置对象
  • ev:node 环境变量
  • appPath:Platform 模块所在路径
  • envList:需要解析的环境变量数组。各模块根据实际情况决定数组内容。数组中包括多个对象。每个对象中的属性包括:
    • name:环境变量中的变量名。大写下划线格式。
    • type:变量的类型。目前包括 String、Bool、Json、smtp、Array、Store、Custom。其中,Array 类型的变量,各元素之间用英文逗号 , 隔开,不要加多余的空格。
    • path(可选):envParser 会直接把大写下划线形式的环境变量参数映射成系统配置中的驼峰形式。如果直接映射的结果不符合预期,就在 path 中放入期望的系统配置变量名。支持映射为对象中的属性,用 . 隔开。
    • keyMap(可选):对于对象(Json)类型的变量,需要传入该参数指明需要解析的属性。对于变量 LOG_DBDBREDISCAPTURECACHE_CAPTURECHROME,envParser 提供了默认的 keyMap,故上述环境变量可以不传 keyMap 参数。
    • fn(可选):对于无法使用 envParser 提供的统一方法进行映射的配置,在 fn 中进行处理。

envList 的样例:

[
    //把环境变量中的 PLATFORM_LINK 赋值给系统配置中的 platform
    {name: 'PLATFORM_LINK', type: 'String', path: 'platform'},
    //把环境变量中的 BACKEND_LINK 赋值给系统配置中的对应驼峰形式的 backendLink
    {name: 'BACKEND_LINK', type: 'String'},
    //把环境变量中的 COMPANY_NAME 赋值给系统配置中 customAssets 的属性 companyName
    {name: 'COMPANY_NAME', type: 'String', path: 'customAssets.companyName'},
    //把环境变量中的 WATERMARK 解析成布尔类型,赋值给系统配置中 customAssets 的属性 watermark
    {name: 'WATERMARK', type: 'Bool', path: 'customAssets.watermark'},
    //把环境变量中的 LOG_DB 解析成一个对象,赋值给系统配置中的 logDatasource。keyMap = {database: 'title', host: 'host', port: 'port', user: 'user', password: 'password'} 在这里省略了因为 envParser 提供了对 LOG_DB 默认的 keyMap
    {name: 'LOG_DB', type: 'Json', path: 'logDatasource'},
    // 把环境变量中的 PAY_MODULES 解析成一个数组,并赋值给系统配置中的对应驼峰形式的 payModules
    {name: 'PAY_MODULES', type: 'Array'},
    // 把环境变量中的 STORE 解析成一个 store 对象,赋值给系统配置中的 ydStore。keyMap 在这里省略了因为 envParser 提供了对 LOG_DB 默认的 keyMap
    {name: 'STORE', type: 'Store', path: 'ydstore'},
    // 无法统一处理的配置,在这里的函数中进行自定义配置
    {
        name: '',
        type: 'Custom',
        fn:function (configJSON) {
             configJSON.from = _.get(configJSON, 'smtp.from') || configJSON.from;
        }
    }
]