npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@gaoding/apollo-client

v2.0.29

Published

apollo nodejs client

Downloads

294

Readme

APOLLO-CLIENT

NPM version

******************************************************************
******************************************************************
**********              代码千万行,注释第一行              **********
**********              编码不规范,同事泪两行              **********
******************************************************************
******************************************************************

携程 Apollo 配置中心 node.js 客户端版本

Installation

npm i @gaoding/apollo-client [--save]

Usage

// config/config.[env].js
const Apollo = require('@gaoding/apollo-client').Apollo

const apollo = new Apollo({
    config_server_url: 'http[s]://xxxxxxx', // required, 配置中心服务地址
    app_id: 'xxx',                          // required, 需要加载的配置
    cluster_name: 'xxx',                    // optional, 加载配置的集群名称, default: 'default'
    namespace_name: 'xxx',                  // optional, 加载配置的命名空间, default: 'application'
    release_key: 'xxx',                     // optional, 加载配置的版本 key, default: ''
    ip: 'xxx'                               // optional,

    set_env_file: false,                    // optional, 是否写入到 env 文件, default: false
    env_file_path: 'xxxx',                  // optional, 写入的 env 文件路径, default: ${app.baseDir}/.env.apollo
    timeout: 50000,                         // optional, 长轮询 timeout 设置,默认 50000
});
apollo.init() // 加载配置
// 直接提取配置
const env = apollo.get('${namespace}.NODE_ENV');
// 不添加 namespace 前缀的时候,默认使用 application 的配置
// 如果 application 不包含该配置,则提取 process.env 里面的配置
// const env = apollo.get('NODE_ENV');
// 提取类型配置
apollo.getString('${namespace}.${string_config}');
apollo.getNumber('${namespace}.${number_config}');
apollo.getBoolean('${namespace}.${boolean_config}');
apollo.getJSON('${namespace}.${json_config}');
apollo.getDate('${namespace}.${date_config}');


// 提取指定 namespace 内容
const application = apollo.getNamespace('application');
// 提取配置
const config1 = application.get('config1');
// 提取 string 类型配置
const str = application.getString('config2');
// 提取 number 类型配置
const num = application.getNumber('config3');
// 提取 boolean 类型配置
const bool = application.getBoolean('config4');
// 提取 json
const json = application.getJSON('config5');
// 提取 date
const date = application.getDate('config6');

// 提取所有配置内容
const all = apollo.getAll();
// 可以从 all 中提取需要的 namespace 配置
// const application = all.application
// const config1 = application.get('config1');
// const str = application.getString('config2');
// const num = application.getNumber('config3');
// const bool = application.getBoolean('config4');
// const json = application.getJSON('config5');
// const date = application.getDate('config6');

// 动态更新本地配置
apollo.startNotification(config?: IApolloRequestConfig);

启动自定义

apollo.init({...});

OpenApi

使用此 open api 需要先了解 Apollo 开放平台,详情请看链接:https://ctripcorp.github.io/apollo/#/zh/usage/apollo-open-api-platform

此插件是对 openApi 的 restful 接口调用进行整合打包,方便调用

初始化

具有两种初始化方案

  1. 跟随 Apollo 客户端初始化
const apollo = new Apollo({
    ...apolloConfig,
    token: 'xxxxxxx',                           // Http Header中增加一个Authorization字段,字段值为申请的token
    portal_address: 'https://apollo.xxxx.com',  // portal url
});

const openApi = apollo.openApi;
  1. 独立初始化
const { OpenApi } = require('@gaoding/apollo');

const openApi = new OpenApi({
    token: 'xxxxxxx',                           // required, Http Header中增加一个Authorization字段,字段值为申请的token
    portal_address: 'https://apollo.xxxx.com',  // required, portal url
    app_id: 'xxx',                              // optional, 需要加载的配置
    cluster_name: 'xxx',                        // optional, 加载配置的集群名称, default: 'default'
    namespace_name: 'xxx',                      // optional, 加载配置的命名空间, default: 'application'
});

api

api 参数和详细文档请参照:https://ctripcorp.github.io/apollo/#/zh/usage/apollo-open-api-platform?id=%e4%b8%89%e3%80%81-%e6%8e%a5%e5%8f%a3%e6%96%87%e6%a1%a3

openApi Methods:

  • getEnvclustersWithAppid(appId?: string)
    • 获取App的环境,集群信息
  • getApps()
    • 获取App信息
  • getClusterInfo(params)
    • 获取集群
  • createCluster(params)
    • 创建集群
  • getNamespaces(params)
    • 获取集群下所有Namespace信息
  • getNamespaceInfo(params)
    • 获取某个Namespace信息
  • createNamespace(params)
    • 创建Namespace
  • getNamespcaeLockInfo(params)
    • 获取某个Namespace当前编辑人
  • getConfigByKey(params)
    • 读取配置
  • addConfig(params)
    • 新增配置
  • modifyConfig(params)
    • 修改配置
  • deleteConfigByKey(params)
    • 删除配置
  • releaseConfigs(params)
    • 发布配置
  • getLatestRelease(params)
    • 获取某个Namespace当前生效的已发布配置
  • rollbackRelease(params)
    • 回滚已发布配置

Tips

  • ✅ 支持初始化的同步加载配置,解决远程加载配置是异步的问题
  • ✅ 支持将配置写入到本地文件,需要开启 set_env_file
  • ✅ 当读取远程配置出错时,兼容本地 env 文件读取, 需要开启 set_env_file

Todo

  • ✅ 支持配置订阅模式
  • ✅ 支持 openApi