Get, set, or delete nested properties of process.env using a dot path
npm install env-dot-prop
♻️ Get, set, or delete nested properties of process.env using a dot path
Coded with ❤️ by Simone Primarosa.
This package aim to let you access to your environment variables as if they were JavaScript object.
See [this guide][12factorsguide] to understand how to use this package to create a [12 Factor compliant][12factors] configuration system for you app.
```
$ npm install --save env-dot-prop
`js
const envDotProp = require('env-dot-prop');
// Let's assume process.env contains the following keys
process.env = {
FOO_BAR: 'unicorn',
'FOO_DOT.DOT': 'pony',
'FOO_UND\\_UND': 'whale'
};
console.log(process.env);
// => { FOO_BAR: 'unicorn', 'FOO_DOT.DOT': 'pony', 'FOO_UND\_UND': 'whale' }
envDotProp.get('');
// => { foo: { bar: 'unicorn', 'dot.dot': 'pony', und_und: 'whale' } }
// getter
envDotProp.get('foo.bar');
// => 'unicorn'
envDotProp.get('foo.notDefined.deep');
// => undefined
envDotProp.get('foo.notDefined.deep', 'default value');
// => 'default value'
envDotProp.get('foo.dot\\.dot');
// => 'pony'
// setter
envDotProp.set('foo.bar', 'b');
envDotProp.get('foo.bar');
// => 'b'
envDotProp.get('');
// => { foo: { bar: 'b', 'dot.dot': 'pony', und_und: 'whale' } }
envDotProp.set('foo.baz.e', 'x');
envDotProp.get('foo.baz.e');
// => 'x'
envDotProp.get('foo.baz');
// => { e: 'x' }
envDotProp.get('');
// => { foo: { bar: 'b', baz: { e: 'x' }, 'dot.dot': 'pony', und_und: 'whale' } }
// has
envDotProp.has('foo.bar');
// => true
// deleter
envDotProp.delete('foo.bar');
envDotProp.get('foo');
// => { baz: { e: 'x' }, 'dot.dot': 'pony', und_und: 'whale' }
envDotProp.delete('foo.baz.e');
envDotProp.get('foo.baz');
// => undefined
envDotProp.set('n1', 42, {stringify: false});
envDotProp.get('n1', {parse: false});
// => 42
envDotProp.get('n1', {parse: true});
// => 42
envDotProp.set('n2', 42, {stringify: true});
envDotProp.get('n2', {parse: false});
// => '42'
envDotProp.get('n2', {parse: true});
// => 42
envDotProp.set('n3', 42);
envDotProp.get('n3');
// => 42
envDotProp.set('n4', '42');
envDotProp.get('n4');
// => '42'
envDotProp.get('');
// => { n1: '42', n1: 42, n3: 42, n4: '42', foo: { 'dot.dot': 'pony', und_und: 'whale' } }
console.log(process.env);
// => { 'FOO_DOT.DOT': 'pony', 'FOO_UND\_UND': 'whale', N1: '42', N2: 42, N3: 42, N4: '42' }
``
anyKind: global function
Returns: any - The values of environment variables associated with the path specified.
Access: public
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| path | string | | Dot separated path. |
| [defaultValue] | any | | Default value to return if there is not any environment variable that matches the path provided. |
| [opts] | Object | | Additional options. |
| [opts.parse] | boolean | false | If true the value retrieved is converted to the proper type. |
| [opts.caseSensitive] | boolean | false | If true no case conversion will be performed from the dot path provided to the env key search. Eg: 'tesT.kEy' will look for tesT_kEy environment variable instead of TEST_KEY. |
Kind: global function
Access: public
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| path | string | | Dot separated path. |
| value | string | | Value to set. |
| [opts] | object | | Additional options. |
| [opts.stringify] | boolean | false | If true the value provided is converted to string. |
| [opts.caseSensitive] | boolean | false | If true no case conversion is performed from the dot path provided to the env key search. Eg: 'tesT.kEy' will look for tesT_kEy environment variable instead of TEST_KEY. |
Kind: global function
Access: public
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| path | string | | A dot separated path. |
| [opts] | object | | Additional options. |
| [opts.caseSensitive] | boolean | false | If true no case conversion is performed from the dot path provided to the env key search. Eg: 'tesT.kEy' will look for tesT_kEy environment variable instead of TEST_KEY. |
booleanKind: global function
Returns: boolean - true if exists at least one environment variables with that
path prefix.
Access: public
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| path | string | | Dot separated path. |
| [opts] | object | | Additional options. |
| [opts.caseSensitive] | boolean | false | If true no case conversion is performed from the dot path provided to the env key search. Eg: 'tesT.kEy' will look for tesT_kEy environment variable instead of TEST_KEY. |
- Simone Primarosa - Github ([@simonepri][github:simonepri]) • Twitter ([@simoneprimarosa][twitter:simoneprimarosa])
See also the list of [contributors][contributors] who participated in this project.
This project is licensed under the MIT License - see the [license][license] file for details.
[start]: https://github.com/simonepri/env-dot-prop#start-of-content
[new issue]: https://github.com/simonepri/env-dot-prop/issues/new
[contributors]: https://github.com/simonepri/env-dot-prop/contributors
[license]: https://github.com/simonepri/env-dot-prop/tree/master/license
[github:simonepri]: https://github.com/simonepri
[twitter:simoneprimarosa]: http://twitter.com/intent/user?screen_name=simoneprimarosa
[12factors]: https://12factor.net/config
[12factorsguide]: https://github.com/simonepri/env-dot-prop/wiki/Create-a-12-factor-compliant-configuration-system