0.0.6 • Published 6 years ago

egg-apollos v0.0.6

Weekly downloads
9
License
MIT
Repository
github
Last release
6 years ago

egg-apollos

NPM version

Install

$ npm i egg-apollos --save

Usage

// {app_root}/config/plugin.js
exports.apollo = {
  enable: true,
  package: 'egg-apollos'
}

Configuration

// apollo配置中心为项目添加指定的 Key:xxx_apollo(xxx_为自定义的配置前缀)
xxx_apollo = {
  interval: '1m',
  type: 'all'
}
// {app_root}/config/apollo.js
module.exports = {
  configServerUrl: process.env.configServerUrl,
  appId: 'node-test-1', // 配置中心命名和项目名称保持一致,
  clusterName: 'default',
  namespaceName: ['application', 'python.PostgreSQL', 'python.redis', 'python.ops']
}
// {app_root}/preload.js
// 初始化,加载参数配置到环境变量

'use strict'
const path = require('path')

require('egg-apollos').init(path.join(__dirname, '/config/apollo.js'))
// {app_root}/config/config.default.js

'use strict'

require('egg-apollos').apollo.setEnv()

// 正则过滤掉非xxx_前缀开头的环境变量
const setConfig = () => {
  const ret = {}
  Object.keys(process.env).forEach(key => {
    if (/^xxx_.+/g.test(key)) {
      let value = process.env[key]
      try {
        value = JSON.parse(process.env[key])
      } catch (err) {
        console.info(`[ apollos.setConfig ] - ${err}`)
      }
      ret[key.replace('xxx_', '')] = value
    }
  })
  return ret
}

module.exports = appInfo => {
  const config = (exports = {})

  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_1530842725133_4230'

  // add your config here
  config.middleware = []

  Object.assign(config, setConfig())
  return config
}
// package.json
// 配置不同的configServerUrl 对应不同的环境
"dev": "set configServerUrl=http://127.0.0.1:8084&& node preload.js && egg-bin dev"
"debug": "set configServerUrl=http://127.0.0.1:8084&& node preload.js && egg-bin debug",
"start":"node preload.js && egg-scripts start"

Note

本项目参考: egg-apollojs,并对其定时器进行了动态改造,支持自定义拉取 apollo 配置的周期。

Example

Questions & Suggestions

Please open an issue here.

License

MIT