Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
easy-configuration
Advanced tools
Simply extensible loader for json config files. This package is inspired by configuration in PHP framework Nette.
$ npm install easy-configuration
var Configuration = require('easy-configuration');
var config = new Configuration('/var/data/config.json');
var data = config.load();
Be careful with setting your path to the config file. Easy-Configuration uses required instead of fs module, because of ability to use it in browser. If you will set this path relatively, then it will be relative to the Easy-Configuration file, not to your actual file.
In default, this configurator contains two basic sections: parameters and includes. Parameters section can holds all your variables which you will need in other sections
{
"parameters": {
"basePath": "./www",
"shared": {
"styles": "%basePath%/css",
"scripts": "%basePath%/js",
"translations": "%basePath%/lang"
}
}
}
If you will add section includes, you can set list of files, which you want to merge with main config file. Paths to these config files must be relative to main config file.
{
"includes": [
"./packages.json"
]
}
When you will try to add own section, Easy Configuration will tell you, that section was found, but there is no corresponding extension. There is example of registration a new one.
var Configuration = require('easy-configuration');
var config = new Configuration('./config.json');
config.addSection('packages');
var data = config.load();
Now you will be able to add new section with name "packages"
In your sections, you can use parameters from section "parameters".
{
"packages": {
"application": "%basePath%/application.js",
"translator": {
"translations": "%shared.translations%",
"script": "%basePath%/translator.js"
},
"items": [
{
"name": "one",
"title": "First"
},
{
"name": "two",
"allowed": false
},
{
"name": "three"
}
]
}
}
Sometimes you may want to customize output of your package. Most simple way is to rewrite method loadConfiguration of default Extension class. For example we always want some other data in our section, even if they are not in config file - let's say "defaults".
var Configuration = require('easy-configuration');
var config = new Configuration('./config.json');
var section = config.addSection('packages');
var defaults = {
applications: "",
styles: "",
translator: {
translations: "",
script: ""
}
};
section.loadConfiguration = function() {
return this.getConfig(defaults);
};
var data = config.load();
Method getConfig has got one optional argument and it is your defaults variable. This method will return configuration only of your section merged with defaults argument (if any). Of course, there can be more complex code.
EasyConfiguration class has got one other useful method and it is merge (using recursive-merge package).
var Configuration = require('easy-configuration');
var config = new Configuration('./config.json');
var section = config.addSection('packages');
var defaults = {
applications: "",
styles: "",
translator: {
translations: "",
script: ""
},
items: []
};
var defaultsItems = {
name: "",
title: "",
allowed: true
};
section.loadConfiguration = function() {
var config = this.getConfig(defaults);
for (var i = 0; i < config.items.length; i++) {
config.items[i] = this.configurator.merge(config.items[i], defaultsItems);
}
return config;
};
var data = config.load();
All data in loadConfiguration are the same like in your json files - parameters are not yet expanded. If you want to work somehow with expanded data, you will need to rewrite afterCompile method.
But even if you use this method, setup styles for your configuration should be set in loadConfiguration method, not in afterCompile.
This method accept one parameter - data which you returned in loadConfiguration method. You also need to return your updated data.
section.afterCompile = function(config) {
return doSomething(config);
};
var Configuration = require('easy-configuration');
var config = new Configuration('./config.json');
var data = config.load();
var parameters = config.parameters;
// or
var parameter = config.getParameter('path.to.some.variable');
$ npm test
1.6.3
1.6.2
1.6.1
1.6.0
1.5.7
1.5.4 - 1.5.6
1.5.3
1.5.2
1.5.0
1.4.3
1.4.2
1.4.1
1.4.0
npm test
command1.3.3
1.3.2
1.3.1
1.3.0
1.2.0
1.1.3
1.1.2
1.1.1
1.1.0
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
FAQs
[ABANDONED] Simply extensible loader for json config files
The npm package easy-configuration receives a total of 37 weekly downloads. As such, easy-configuration popularity was classified as not popular.
We found that easy-configuration demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.