0.0.9 • Published 5 years ago

c4configger v0.0.9

Weekly downloads
52
License
-
Repository
github
Last release
5 years ago

C4Configger是用来加载和解析本地或远程配置文件的工具,支持:

  • 本地配置文件支持yaml和json格式,其中json格式支持注释;
  • 本地配置文件支持宏定义和文件引用(@link://{filePath});
  • 远程配置文件支持Spring Cloud的Configer Server;
  • 远程配置文件支持宏定义但不支持文件引用;
  • 支持将远程配置文件展开为标准JSON对象,如:

      {
          name : 'sdfsdfsdf/app01-dev.yml',
          source : {
              xxx[0].Path : '123',
              xxx[1].main : 'sadsd',
              oooo.host : 'sdfdsf'
          }
      }
    {
        name : 'sdfsdfsdf/app01-dev.yml',
        source: {
            xxx : [
                {
                    Path : '123'
                },
                {
                    main : 'asdsd'
                }
            ],
            ooo : {
                host : 'sdfdsf'
            }
        }
    }
  • 支持将加载完毕的配置Dump为一个完整的配置文件输出。

配置文件详解参考 ./Config/Configger.yml中的注释

使用时需要手动配置AppInfo进行C4Configger的构造。

  • C4Configger

    • 说明:C4Configger对象
    • 路径:./src/C4Configger.ts
    • 成员变量:

      • m_LocalLoader,本地加载器,用来加载json或yaml格式配置文件;
      • m_RemoteLoader,远程加载器,用来从Spring Cloud的Config Server加载配置;
      • m_AJV,C4AJV用来对Configger的配置项进行校验;
      • m_ConfigInfo,C4ConfigInfo用来配置一些宏需要的信息。
    • 成员方法:

      • init
      /**
      * 初始化
      */
      async init() 
      • load
      /**
      * 加载
      */
      async load()
      • refresh
      /**
      * 刷新
      */
      async refresh()
      • loadType
      /**
      * 获取当前的加载器类型
      */
      loadType() 
      • dump
      /**
      * 将当前数据dump到文件中
      * @param type 输出的文件类型
      * @param savePath 保存的路径
      */
      async dump(type : C4ConfigFileType, savePath ?: string) 
  • C4BaseLoader

    • 说明:配置加载器的基类
    • 路径:./src/C4BaseLoader.ts
    • 成员变量:无
    • 成员方法:

      • init,初始化方法,需要子类去实现;
      • _processMacro
      /**
      * 处理宏
      * @param value 当前值
      * @param configInfo C4ConfigInfo
      */
      async _processMacro(value : string, configInfo : C4ConfigInfo)
      • _isLink
      /**
      * 判断是否是文件引用
      * @param value 当前配置项的值
      */
      _isLink(value : string)
  • C4LocalLoader

    • 说明:本地加载器,可以设置不同的类型文件(根据文件扩展名)设置加载器进行加载;
    • 路径:./src/C4LocalLoader.ts
    • 成员变量:

      • m_Loaders,文件加载器的存储字典,key为文件扩展名,value为C4ConfigLoaderInterface
    • 成员方法:

      • init
      • load
      /**
      * 加载配置
      * @param rootDir 根目录
      * @param loadString 加载文件
      * @param configInfo C4ConfigInfo
      */
      async load(rootDir : string, loadString : string, configInfo : C4ConfigInfo) 
      • _load
      /**
      * 实际加载的方法
      * @param rootDir 根目录
      * @param loadString 加载文件
      * @param configInfo C4ConfigInfo
      */
      async _load(rootDir : string, loadString : string, configInfo : C4ConfigInfo) 
      • registerLoader
      /**
      * 注册文件加载器
      * @param key 文件扩展名
      * @param loaderFactory 创建加载器的工厂方法
      */
      async registerLoader(key : string, loaderFactory : () => C4ConfigLoaderInterface) 
  • C4RemoteLoader

    • 说明:远程加载器,从Spring Cloud的Config Server加载配置,并将结果转换为标准JSON对象;
    • 路径:./src/C4RemoteLoader.ts
    • 成员变量:

      • m_Client,C4RESTFulClient,用于进行请求。
    • 成员方法:

      • init
      /**
      * 初始化
      * @param option ClientOption
      * @param changeServer 是否切换Client配置
      */
      async init(option ?: ClientOption, changeServer : boolean = false)
      • load
      /**
      * 加载配置
      * @param configInfo C4ConfigInfo
      */
      async load(configInfo : C4ConfigInfo)
      • _parse
      /**
      * 对结果进行解析
      * @param config 返回的配置项
      * @param configInfo C4ConfigInfo
      */
      _parse(config : any, configInfo : C4ConfigInfo)
  • C4ConfigLoaderInterface

    • 说明:本地配置文件加载对象的接口类;
    • 路径:./src/LoaderInstance/C4ConfigLoaderInterface.ts
    • 成员变量:无
    • 成员方法:

      • init
      /**
      * 初始化方法
      * @param initString 初始参数
      */
      abstract async init(initString : string) : Promise<any>
      • load
      /**
      * 加载方法
      * @param rootDir 根目录
      * @param loadString 加载文件
      * @param configInfo C4ConfigInfo
      */
      abstract async load(rootDir : string, loadString : string, configInfo : C4ConfigInfo) : Promise<any>
  • C4JSONLoader

    • 说明:本地配置文件JSON类型的加载器;
    • 路径:./src/LoaderInstance/C4JSONLoader.ts
    • 成员变量:无
    • 成员方法:

      • init
      /**
      * 初始化方法
      * @param initString 初始参数
      */
      abstract async init(initString : string) : Promise<any>
      • load
      /**
      * 加载方法
      * @param rootDir 根目录
      * @param loadString 加载文件
      * @param configInfo C4ConfigInfo
      */
      abstract async load(rootDir : string, loadString : string, configInfo : C4ConfigInfo) : Promise<any>
  • C4YamlLoader

    • 说明:本地配置文件JSON类型的加载器;
    • 路径:./src/LoaderInstance/C4YamlLoader.ts
    • 成员变量:无
    • 成员方法:

      • init
      /**
      * 初始化方法
      * @param initString 初始参数
      */
      abstract async init(initString : string) : Promise<any>
      • load
      /**
      * 加载方法
      * @param rootDir 根目录
      * @param loadString 加载文件
      * @param configInfo C4ConfigInfo
      */
      abstract async load(rootDir : string, loadString : string, configInfo : C4ConfigInfo) : Promise<any>