Configent
Confident configurations
No fuzz config compilation from (ordered by ascending precedence)
- defaults
- package.json
- [name].config.js
- .env
- environment
- input
/**
* package.json {"foobar": {"city": "Portsmouth"}}
* foobar.config.js {lastSeen: 'Liverpool'}
* process.env.foobar_last_seen = London
* options = { name: 'Sherlock Holmes' }
*/
const defaults = { name: 'John Doe', city: 'N/A', lastSeen: 'N/A' }
const config = configent('foobar', defaults, options)
/**
* console.log(config)
* {
* name: 'Sherlock Holmes',
* city: 'Portsmouth',
* lastSeen: 'London'
* }
* /
Auto detect defaults
Configent supports multiple default configs. These are added to ./configs
.
/** ./configs/routify2.config.js */
module.exports = {
supersedes: ['svelte'],
condition: ({ pkgjson }) => pkgjson.dependencies['@roxi/routify'],
config: () => ({
/** the config object used as default */
myAppName: 'Routify App'
})
}
/** ./configs/svelte.config.js */
module.exports = {
condition: ({ pkgjson }) => pkgjson.dependencies['svelte'],
config: () => ({
/** the config object used as default */
myAppName: 'Svelte App'
})
}
The first config with a true condition is used. To avoid conflicts, configs using the supersedes
option, will run before their superseded targets.
To change the location of default configs, refer to detectDefaultsConfigPath
.
API
Table of Contents
configent
Parameters
-
defaults
options default options -
input
Partial<options>? provided input (optional, default{}
) -
configentOptions
object? configent options-
configentOptions.name
string name to use for configs. If left empty, name from package.json is used (optional, default''
) -
configentOptions.cacheConfig
boolean calling configent twice with same parameters will return the same instance (optional, defaulttrue
) -
configentOptions.cacheDetectedDefaults
boolean calling configent twice from the same module will return the same defaults (optional, defaulttrue
) -
configentOptions.useDotEnv
boolean include config from .env files (optional, defaulttrue
) -
configentOptions.useEnv
boolean include config from process.env (optional, defaulttrue
) -
configentOptions.usePackageConfig
boolean include config from package.json (optional, defaulttrue
) -
configentOptions.useConfig
boolean include config from [name].config.js (optional, defaulttrue
) -
configentOptions.useDetectDefaults
boolean detect defaults from context (package.json and file stucture) (optional, defaulttrue
) -
configentOptions.detectDefaultsConfigPath
string detect defaults from context (package.json and file stucture) (optional, default'configs'
) -
configentOptions.sanitizeEnvValue
function sanitize environment values. Convert snake_case to camelCase by default. (optional, defaultstr=>str.replace(/[-_][a-z]/g,str=>str.substr(1).toUpperCase())
) -
configentOptions.module
NodeModule? required if multiple modules are using configent
-
Returns options