jsonmergeconfig
v1.0.0
Published
A sleek way to load and merge JSON formatted files.
Downloads
4
Maintainers
Readme
features
- load Object from a JSON file
- explicitly reference additional files and merge contents into a single Object
- load all files from a directory and merge their contents (conf.d style)
- explicitly reference a directory to import files from
install
npm install --save jsonmergeconfig
usage
var config = require('jsonmergeconfig').load('pathToFile.json');
config file syntax
plain JSON string
file1.json
{"option1": "value1"}
results in:
{"option1": "value1"}
import file
file1.json
{"option1": "value1", "imports": ["/path/to/additional_file.json"]}
additional_file.json
{"option2": "value2"}
results in:
{"option2": "value2", "option1": "value1"}
import directory
file1.json
{"option1": "value1", "imports": ["/path/to/conf.d"]}
conf.d/additional_file1.json
{"option2":"value2"}
conf.d/additional_file2.json
{"option3":"value3"}
results in:
{"option2":"value2","option3":"value3","option1":"value1"}
cascading imports
file1.json
{"option1": "value1", "imports": ["/path/to/file2.json"]}
file2.json
{"option2": "value2", "imports": ["/path/to/file3.json"]}
file3.json
{"option3": "value3", "imports": ["/path/to/file3.json"]}
results in:
{"option3":"value3","option2":"value2","option1":"value1"}
Beware: circular imports result in infinite loops
overwriting values
file1.json
{"option1": "value1", "imports": ["/path/to/file2.json", "/path/to/file3,json"]}
file2.json
{"option1": "overwritten value", "option2": "value2", "option3": "value3"}
file3.json
{"option3": "newValue3"}
results in:
{"option1":"value1", "option2": "value2", "option3": "newValue3"}
The second import overwrites the first. The third import overwrites the second. The current file always wins.
cascading imports support overwriting as well
test
npm test