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

  • 相关阅读:
    Rsync算法
    java学习之异常
    多边形的扫描转换(一)X扫描线算法
    区域填充算法
    直线绘制的三个著名的常用算法(二)中点画线法
    Dev C++图形环境配置
    直线绘制的三个著名的常用算法(三)Bresenham算法
    直线绘制的三个著名的常用算法(一)数值微分法(DDA)
    反走样
    网课——计算机图形学(第一课)
  • 原文地址:https://www.cnblogs.com/houfeng/p/5709406.html
Copyright © 2011-2022 走看看