Использование - a696385/a.config GitHub Wiki
Установка
Система конфигурации для Node.js приложений
Предисловие
Система конфигурация нацелена на систематизирование файлов конфигураций, позволяет удобно расширять изменять и управлять вашими настройками.
Использование
Установка через npm
project$ npm install a.config
Вы можете использовать для конфигуратора js
, json
, yaml
.
Пример файла конфигурации
# Внутренние переменные
$config:
default.format.processor: 'default'
default.format.value: '%level %date %args %code'
production:
mongo:
uri: 'mongodb://localhost.loc:27017/log'
ttl: 604800
format:
name: 'mongo'
value: '%level, %module, %hostname, %args, %code, %trace, %errors'
development:
$extend: production # Наследование production и изменение mongo.uri, mongo.ttl
mongo:
uri: 'mongodb://localhost:27017/log'
ttl: 600
prog12:
$extend: development # Наследование development и изменение mongo.uri
mongo:
uri: 'mongodb://localhost:27030/log'
# Настройки системы логирования
default:
all:
console: true
syslog: true
production:
$extend: default # Наследование default и расширение свойством app
app:
all,info,debug:
- mongo:
$extend: :$config.production.mongo # Наследование $config.production.mongo
- console: true
error,warn:
- mongo:
$extend: :$config.production.mongo # Наследование $config.production.mongo
syslog: true
- console: true
development:
$extend: default # Наследование default и расширение свойством app
app:
$replace: :production.app # Наследование из production.app, с полной заменой при наличии одинаковый свойств
all,info,debug:
- console: true
Загрузка файла конфиграции
var config = require('a.config');
config.load(__dirname + '/config.yaml');
После загрузки конфигурации, ее можно использовать в любом месте приложении
var config = require('a.config');
console.log(config.default.all);
//{console: true, syslog: true}
Для создания нового объекта конфигурации можно использовать метод newInstance()
var config = require('a.config');
config.load(__dirname + '/config.yaml');
var exConfig = config.newInstance();
exConfig.load(__dirname + '/config.ex.yaml');
console.log(config.default.all);
//{console: true, syslog: true}
console.log(exConfig.default);
//undefined
Расширения
Для удобного использования конфигураций используется ряд раширений:
-
$extend
- Позволяет расширять данный объект, необходимо указать имя объекта, который необходимо расширить. Имеет две возможности указания имени, абсолютный:production
(перед именем ставится:
), необходимо указать полный пусть к объекту, относительныйproduction
, указывается имя объекта находящегося в том же уровне.Пример
production:
mongo:
uri: 'mongodb://localhost.loc:27017/log'
ttl: 604800
format:
name: 'mongo'
value: '%level, %module, %hostname, %args, %code, %trace, %errors'
development:
$extend: production
mongo:
uri: 'mongodb://localhost:27017/log'
ttl: 600
user:
mongo:
$extend: :production.mongo
{
"production": {
"mongo": {
"uri": "mongodb://localhost.loc:27017/log",
"ttl": 604800,
"format": {
"name": "mongo",
"value": "%level, %module, %hostname, %args, %code, %trace, %errors"
}
}
},
"development": {
"mongo": {
"uri": "mongodb://localhost:27017/log",
"ttl": 600,
"format": {
"name": "mongo",
"value": "%level, %module, %hostname, %args, %code, %trace, %errors"
}
}
},
"user": {
"mongo": {
"uri": "mongodb://localhost.loc:27017/log",
"ttl": 604800,
"format": {
"name": "mongo",
"value": "%level, %module, %hostname, %args, %code, %trace, %errors"
}
}
}
}
-
$replace
- Работает аналогично$extend
за одним исключением, если одно из переопределенных свойств является объектом, то оно перекрывается полностьюПример
production:
mongo:
uri: 'mongodb://localhost.loc:27017/log'
ttl: 604800
format:
name: 'mongo'
value: '%level, %module, %hostname, %args, %code, %trace, %errors'
user:
mongo:
$replace: :production.mongo
format:
caption: 'caption'
{
"production": {
"mongo": {
"uri": "mongodb://localhost.loc:27017/log",
"ttl": 604800,
"format": {
"name": "mongo",
"value": "%level, %module, %hostname, %args, %code, %trace, %errors"
}
}
},
"user": {
"mongo": {
"format": {
"caption": "caption"
},
"uri": "mongodb://localhost.loc:27017/log",
"ttl": 604800
}
}
}
-
$include
- Расширяет объект свойствами из подключаемого файла, пути используются относительные текущего файлаПример
production:
mongo:
uri: 'mongodb://localhost.loc:27017/log'
ttl: 604800
format:
name: 'mongo'
value: '%level, %module, %hostname, %args, %code, %trace, %errors'
user:
mongo:
$include: './configs/mongo.yaml'
Лицензия
Может свободно распространяется под лицензией MIT
Смотрите файл лицензии LICENSE
Copyright (c) 2013 - Sumskoy Andrew [email protected]