Parse dotenv files for
Boolean,Array, andNumbervariable types, built for Lad and Forward Email.
npm:
npm install dotenv-parse-variablesyarn:
yarn add dotenv-parse-variablesImagine 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:
console.log(env);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.envfile) 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 totrue, whether or not to assign the parsed values toprocess.envoverrideProcessEnv(Boolean) - defaults tofalse, whether or not to override existing values inprocess.envignoreFunctions(Boolean) - defaults totrue, whether or not to ignore functions in the parsed values returned
| Name | Website |
|---|---|
| Nick Baugh | http://niftylettuce.com |
MIT © Nick Baugh