zoukankan      html  css  js  c++  java
  • Confman

    一句话介绍

    confman 是一个强大的配置文件加载器,无论你喜欢 yaml 、cson、json、properties、plist、ini、toml、xml 还是 js,都能满足你的愿望,并且更加简单、更加强大。

    npm version Build Status

    支持的特性

    • 支持多种配置文件格式,默认包括 yaml/cson/json/properties/plist/ini/toml/xml/js
    • 支持配置文件相互引用,无论何种格式都可以「引用其它任意格式」的配置文件
    • 支持「基于目录」的多文件配置
    • 支持「环境配置」,区分加载生产、测试等不同的配置
    • 可以非常方便的「扩展」新的配置文件格式
    • 可以「混合使用」不同的配置文件格式

    现在就安装

    $ npm install confman --save
    

    来几个示例

    不同的环境配置

    目录

    app
    ├── index.js
    ├── config.dev.yaml
    ├── config.prod.yaml
    └── config.yaml
    

    index.js

    const confman = require('confman');
    const configs = confman.load(`${__dirname}/config`);
    console.log(configs);
    

    启动应用

    $ NODE_ENV=prod node index.js 
    

    通过指定 NODE_ENV 可以加载指定的「环境配置文件 config.prod.yaml」,并和「默认配置 config.yaml」进行合并,
    如果有相同的配置,「环境配置会覆盖默认配置」

    配置文件相互引用

    文件一: test1.yaml

    name: test1
    #可以使用 $require 引用其它文件
    child: $requrie ./test2
    

    文件二: test2.json

    {
      "name": "test2",
       "child": "$require other-file"
    }
    

    $require 可以在任意支持的格式的配置文件中使用

    基于目录的多文件配置

    目录结构

    ├── config
    │   ├── conn.yaml
    │   ├── index.yaml
    │   └── mvc.yaml
    ├── config.dev
    │   └── conn.yaml
    ├── config.prod
    │   └── conn.yaml
    └── index.js
    

    index.js

    const confman = require('confman');
    const configs = confman.load(`${__dirname}/config`);
    console.log(configs);
    

    添加新格式

    其实,多数情况你不需要这么做,如果确实有需要,你可这样编写一个自定义 loader

    module.exports = {
      extname: '.xxx',
      load: function (configPath) {
        //...
        return configs;
      }
    };
    

    添加自定义 loader

    confman.loaders.push(require('your-loader-path'));
    

    新的扩展名

    方式一,映射到一个已经支持(指已注册的 loader)的 loader

    confman.loaders.push({
      extname: '.xxx',
      loader: '.yaml'
    });
    

    方式二,映射到一个自定义 loader

    confman.loaders.push({
      extname: '.xxx',
      loader: require('your-loader-path')
    });
    

    现在或将来有可能会用到?那你应该去加个 Star
    GitHub : https://github.com/Houfeng/confman

  • 相关阅读:
    mongoDB BI 分析利器
    如何定位 Node.js 的内存泄漏
    如何对MySQL数据库中的数据进行实时同步
    [有奖活动进行中]阿里数据库专家曾文旌为你解决数据库那些事
    如何实现Docker应用的自定义弹性伸缩
    vue methods 中方法的相互调用
    vue 实现部分路由组件缓存
    SSH框架之一详解maven搭建多模块项目
    GitHub Pages 搭建流程-基于jekyll-bootstrap
    ExtJs 4 中的MVC应用架构
  • 原文地址:https://www.cnblogs.com/houfeng/p/5709406.html
Copyright © 2011-2022 走看看