Confman - 针对「Node 应用」的配置文件加载模块

一句话介绍

confman 是一个强大的配置文件加载器,不管你喜欢 yaml 、cson、json、properties、plist、ini、toml、xml 仍是 js,都能知足你的愿望,而且更加简单、更增强大。node

npm version Build Status

支持的特性

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

如今就安装

$ npm install confman --save

来几个示例

不一样的环境配置

目录git

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

index.jsgithub

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

启动应用npm

$ NODE_ENV=prod node index.js

经过指定 NODE_ENV 能够加载指定的「环境配置文件 config.prod.yaml」,并和「默认配置 config.yaml」进行合并, 若是有相同的配置,「环境配置会覆盖默认配置」json

配置文件相互引用

文件一: test1.yamlmvc

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

文件二: test2.jsonapp

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

$require 能够在任意支持的格式的配置文件中使用测试

基于目录的多文件配置

目录结构ui

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

index.jscode

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

相关文章
相关标签/搜索