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

相關文章
相關標籤/搜索