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'
* }
* /
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
.
defaults
options default optionsinput
Partial<options>? provided input (optional, default{}
)configentOptions
object? configent optionsconfigentOptions.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