Package Exports
- dotenv-parse-variables
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (dotenv-parse-variables) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
dotenv-parse-variables
Parse dotenv files for
Boolean
,Array
, andNumber
variable types, built for Lad and Forward Email.
Table of Contents
Install
npm:
npm install dotenv-parse-variables
yarn:
yarn add dotenv-parse-variables
Example
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:
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.
Usage
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).
Options
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.env
overrideProcessEnv
(Boolean) - defaults tofalse
, whether or not to override existing values inprocess.env
ignoreFunctions
(Boolean) - defaults totrue
, whether or not to ignore functions in the parsed values returned
Contributors
Name | Website |
---|---|
Nick Baugh | http://niftylettuce.com |
License
MIT © Nick Baugh