1.4.11 • Published 2 years ago

config-json5 v1.4.11

Weekly downloads
4
License
MIT
Repository
github
Last release
2 years ago

config-json5

Simple Usage

Configuration files

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.json5

When 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.json

Note:

  • config/advanced is the advanced configuration, it overwrites step by step in Namespace Order.
  • config/*.EXT is the highest priority configuration, follows the Namespace 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 . > /
  • json ext file format is same as json5.

Import

import config from 'config-json5'

config.Customer.dbConfig
config.get('Customer.dbConfig')
config.has('Customer.dbConfig')

Custom Export

You can use custom dirname or env to manage your configuration.

module1/config
module1/config/index.js
module1/config/default.js

module1/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')

Config Split

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"
}

License

MIT

1.4.11

2 years ago

1.4.10

2 years ago

1.4.9

3 years ago

1.4.8

3 years ago

1.4.7

4 years ago

1.4.6

4 years ago

1.4.5

4 years ago

1.4.4

4 years ago

1.4.3

5 years ago

1.3.3

5 years ago

1.3.2

5 years ago

1.3.1

5 years ago

1.3.0

5 years ago

1.2.0

5 years ago

1.1.0

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago