egg-apollos
v0.0.6
Published
apollo plugin for egg.js
Downloads
7
Maintainers
Readme
egg-apollos
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.