/node-apollo

🚀携程Apollo配置中心node SDK.

Primary LanguageJavaScript

NPM version David deps npm download Build Status

node-apollo

携程Apollo配置中心node SDK.

Install

$ npm i node-apollo --save-dev

Node.js >= v7.6.0 required.

Features

  • ✔︎ 适用eggjs(egg-apollojs), thinkjs等docker部署项目
  • ✔︎ 适用自己手动搭建的服务,可直接读取JSON格式的配置
  • ✔︎ 增加支持http/https协议请求

Usage

Methods

apollo# remoteConfigServiceFromCache(config)

  const config = {
    configServerUrl: 'http://example.com',   
    // configServerUrl: 'https://example.com', // Support https
    appId: '<appId>',
    clusterName: 'default',
    namespaceName: [ 'namespaceName1', 'namespaceName2' ], // n1的配置会被n2配置覆盖
    // clientIp: '',
    };
  const result = await apollo.remoteConfigServiceFromCache(config);

NOTE: 通过带缓存的Http接口从Apollo读取配置,详情请参考Apollo开放平台.

apollo# remoteConfigServiceSkipCache(config)

  const config = {
    configServerUrl: 'http://example.com', 
    // configServerUrl: 'https://example.com', // Support https
    appId: '<appId>',
    clusterName: 'default',
    namespaceName: [ 'namespaceName1', 'namespaceName2' ], // n1的配置会被n2配置覆盖
    // clientIp: '', // optional
    // releaseKey: '', // optional
    };
  const result = await apollo.remoteConfigServiceSkipCache(config);

NOTE: 通过不带缓存的Http接口从Apollo读取配置,详情请参考Apollo开放平台.

apollo# remoteConfigService(config)

  const config = {
      configServerUrl: 'http://example.com',  
      // configServerUrl: 'https://example.com',  // Support https
      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开放平台.

apollo# createEnvFile(envConfig)

  const envConfig = {
      mongoose: 'mongo://127.0.0.1:27017',
      appId: '<appId>',
    };
  apollo.createEnvFile(envConfig);

NOTE: 生成环境变量文件,常用于docker化项目,详细请参考example.

apollo# setEnv()

apollo.setEnv();

NOTE: 注入环境变量到process.env, 详情请参考dotenv.

TODO

  • [x] 支持局部配置热更新

NOTE: 不支持热更新,具体原因和方案请参考:关于eggjs热部署问题

License

MIT