New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

config-json5

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

config-json5

configuration control with namespaces and yaml/json5/js

latest
Source
npmnpm
Version
1.4.11
Version published
Maintainers
1
Created
Source

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

Keywords

config-json5

FAQs

Package last updated on 23 Mar 2022

Did you know?

Socket

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.

Install

Related posts