https://github.com/roxiness/configent
no fuzz configurator
https://github.com/roxiness/configent
Last synced: about 1 year ago
JSON representation
no fuzz configurator
- Host: GitHub
- URL: https://github.com/roxiness/configent
- Owner: roxiness
- Created: 2020-09-30T14:06:51.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-12-09T23:10:09.000Z (over 3 years ago)
- Last Synced: 2025-04-17T19:30:08.679Z (about 1 year ago)
- Language: JavaScript
- Size: 1.32 MB
- Stars: 12
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Configent
### Confident configurations
No fuzz config compilation from (ordered by ascending precedence)
- defaults
- package.json
- [name].config.js
- .env
- environment
- input
```javascript
/**
* 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`.
```javascript
/** ./configs/routify2.config.js */
module.exports = {
supersedes: ['svelte'],
condition: ({ pkgjson }) => pkgjson.dependencies['@roxi/routify'],
config: () => ({
/** the config object used as default */
myAppName: 'Routify App'
})
}
```
```javascript
/** ./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](#configent)
- [Parameters](#parameters)
#### configent
##### Parameters
- `defaults` **options** default options
- `input` **Partial<options>?** provided input (optional, default `{}`)
- `configentOptions` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** configent options
- `configentOptions.name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** name to use for configs. If left empty, name from package.json is used (optional, default `''`)
- `configentOptions.cacheConfig` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** calling configent twice with same parameters will return the same instance (optional, default `true`)
- `configentOptions.cacheDetectedDefaults` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** calling configent twice from the same module will return the same defaults (optional, default `true`)
- `configentOptions.useDotEnv` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** include config from .env files (optional, default `true`)
- `configentOptions.useEnv` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** include config from process.env (optional, default `true`)
- `configentOptions.usePackageConfig` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** include config from package.json (optional, default `true`)
- `configentOptions.useConfig` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** include config from [name].config.js (optional, default `true`)
- `configentOptions.useDetectDefaults` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** detect defaults from context (package.json and file stucture) (optional, default `true`)
- `configentOptions.detectDefaultsConfigPath` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** detect defaults from context (package.json and file stucture) (optional, default `'configs'`)
- `configentOptions.sanitizeEnvValue` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** sanitize environment values. Convert snake_case to camelCase by default. (optional, default `str=>str.replace(/[-_][a-z]/g,str=>str.substr(1).toUpperCase())`)
- `configentOptions.module` **NodeModule?** required if multiple modules are using configent
Returns **options**
####
---