携程Apollo配置中心node SDK.
$ npm i node-apollo --save-dev
Node.js >= 6.0.0 required.
- ✔︎ 适用eggjs(egg-apollojs), thinkjs等docker部署项目
- ✔︎ 适用自己手动搭建的服务,可直接读取JSON格式的配置
- See examples
const config = {
configServerUrl: 'http://example.com',
appId: '<appId>',
clusterName: 'default',
namespaceName: [ 'namespaceName1', 'namespaceName2' ], // n1的配置会被n2配置覆盖
// clientIp: '',
};
const result = await apollo.remoteConfigServiceFromCache(config);
NOTE: 通过带缓存的Http接口从Apollo读取配置,详情请参考Apollo开放平台.
const config = {
configServerUrl: 'http://example.com',
appId: '<appId>',
clusterName: 'default',
namespaceName: [ 'namespaceName1', 'namespaceName2' ], // n1的配置会被n2配置覆盖
// clientIp: '', // optional
// releaseKey: '', // optional
};
const result = await apollo.remoteConfigServiceSkipCache(config);
NOTE: 通过不带缓存的Http接口从Apollo读取配置,详情请参考Apollo开放平台.
const config = {
configServerUrl: 'http://example.com',
appId: '<appId>',
clusterName: 'default',
namespaceName: '', //no surport multi namespace name, optional
apolloEnv: 'dev',
token: '<apollo access token>', // required
// clientIp: '',
};
const result = await apollo.remoteConfigService(config);
NOTE: 读取携程Apollo配置,调用第三方应用接入Apollo开放平台, 详情请参考Apollo开放平台.
const envConfig = {
mongoose: 'mongo://127.0.0.1:27017',
appId: '<appId>',
};
apollo.createEnvFile(envConfig);
NOTE: 生成环境变量文件,常用于docker化项目,详细请参考example.
apollo.setEnv();
NOTE: 注入环境变量到process.env, 详情请参考dotenv.
[x] 支持局部配置热更新
NOTE: 不支持热更新,具体原因和方案请参考:关于eggjs热部署问题