1.0.0 • Published 9 years ago

jsonmergeconfig v1.0.0

Weekly downloads
3
License
MIT
Repository
github
Last release
9 years ago

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