Parse dotenv files for
Boolean
,Array
, andNumber
variable types, built for Lad and Forward Email.
npm:
npm install dotenv-parse-variables
yarn:
yarn add dotenv-parse-variables
Imagine you have a configuration file at .env
with the following:
FOO=bar BAZ=2 BEEP=false BOOP=some,thing,that,goes,wow # note how we use an asterisk here to turn off the parsing for this variable BLEEP=false* # note how we use an asterisk in the array to turn off parsing for an array key value PING=ping,true*,2,100 # note a string between bacticks won't be parsed PONG=`some,thing,that,goes,wow`
After using this plugin, the environment variables are parsed to their proper types.
To test it out, simply log the returned object in your console:
And you'll see that it outputs the properly parsed variable types:
{ // String FOO: 'bar', // Number BAZ: 2, // Boolean BEEP: false, // Array BOOP: [ 'some', 'thing', 'that', 'goes', 'wow' ], // NOTE: this was not parsed due to the * asterisk override above BLEEP: 'false', // NOTE: only the "true*" above was opted out through the use of an asterisk PING: [ 'ping', 'true', 2, 100 ], // NOTE: this was not parsed because the string was between bacticks PONG: 'some,thing,that,goes,wow' }
If your configuration line ends in *
it will not be parsed by this package, which allows you to keep values as the String
variable type if needed. Also when you encapsulate a value between bacticks e.g. `value`, the value won't be parsed and it will return as a String
variable. This can be used in situations where you for example have a ,
inside your string and it should not be parsed as an array.
This package works well with dotenv, however we also recommend to use dotenv-extended and dotenv-expand as we do in Lad. You could also simply just use Lad or @ladjs/env specifically.
Example with
dotenv
:
const dotenv = require('dotenv'); const dotenvParseVariables = require('dotenv-parse-variables'); let env = dotenv.config({}) if (env.error) throw env.error; env = dotenvParseVariables(env.parsed); console.log(env);
Example with
dotenv-extended
(which supports a well-defined.env
file) anddotenv-expand
(which supports variable interpolation):
const dotenvExtended = require('dotenv-extended'); const dotenvMustache = require('dotenv-mustache'); const dotenvParseVariables = require('dotenv-parse-variables'); let env = dotenvExtended.load({ silent: false, errorOnMissing: true, errorOnExtra: true }); env = dotenvMustache(env); env = dotenvParseVariables(env); console.log(env);
If you don't want to use this package to parse variable types, you could also use getenv (but it requires more work).
A second argument can be provided to dotenvParseVariables
with an object of options.
The defaults are listed below:
assignToProcessEnv
(Boolean) - defaults to true
, whether or not to assign the parsed values to process.env
overrideProcessEnv
(Boolean) - defaults to false
, whether or not to override existing values in process.env
ignoreFunctions
(Boolean) - defaults to true
, whether or not to ignore functions in the parsed values returnedMIT © Nick Baugh
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4