Put configuration files in config which is at project root dir.
config/advanced/com/somewind/default.js
config/advanced/com/default.js
config/advanced/com/somewind.json
config/advanced/com.somewind/default.js
config/advanced/com.somewind/domain1.dev.json
config/advanced/com.somewind/domain1.js
config/advanced/com.somewind/domain2.json
config/advanced/com.somewind.json
config/advanced/default.js
config/default.json
config/default.json5When process.env.NODE_ENV is com.somewind.domain1.dev or domain1.dev, it will merge the following configurations in a top-down order.(use lodash.merge, array is override)
config/advanced/default.js
config/advanced/com/default.js
config/advanced/com/somewind.json
config/advanced/com.somewind.json
config/advanced/com/somewind/default.js
config/advanced/com.somewind/default.js
config/advanced/com.somewind/domain1.js
config/advanced/com.somewind/domain1.dev.json
config/default.json5
config/default.jsonNote:
config/advancedis the advanced configuration, it overwrites step by step inNamespace Order.config/*.EXTis the highest priority configuration, follows theNamespace Order, and overrides the advanced configuration- Same filename with different file ext, priority order is
yaml > json > json5 > js. - Different file paths, priority order is
. > / jsonext file format is same asjson5.
import config from 'config-json5'
config.Customer.dbConfig
config.get('Customer.dbConfig')
config.has('Customer.dbConfig')You can use custom dirname or env to manage your configuration.
module1/config
module1/config/index.js
module1/config/default.jsmodule1/config/index.js
import config from 'config-json5'
// option dirname, must be fullpath or [fullpath0, fullpath1, ...]
// option env, default is process.env.NODE_ENV
export default config.parse(__dirname, process.env.TARGET, [arg1, arg2, ...argN])Use parameter in config file.
export default (arg1, arg2 ...argN) => ({
Customer: {
arg1: arg1
}
})Import from your export code.
import config from './module1/config'
config.Customer.dbConfig
config.get('Customer.dbConfig')
config.has('Customer.dbConfig')Configurations can be split in chunks.
// default.json
{
"app": {
"name": "test",
"port": 1234
},
"database": {
"username": "root",
"password": "1234"
},
"logger": {
"level": "info"
},
"domain": "docs.config-json5.org"
}default.json can be split into the following files
// @.json
{
"logger": {
"level": "info"
},
"domain": "docs.config-json5.org"
}
// @app.json
{
"name": "test",
"port": 1234
}
// @database.json
{
"username": "root",
"password": "1234"
}