Get unlimited public & private packages + team-based management with npm Teams.Learn more »

dotenv-parse-variables

0.2.3 • Public • Published

dotenv-parse-variables

Slack Status NPM version Build Status Code Coverage Standard JS Style MIT License

Parse dotenv files for Boolean, Array, and Number variable types, built for CrocodileJS.

Index

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.

Install

npm install --save dotenv-parse-variables

Usage

This package works just fine with dotenv, however we also recommend to use dotenv-extended and dotenv-expand as we do in CrocodileJS.

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) and dotenv-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).

License

MIT

Install

npm i dotenv-parse-variables

DownloadsWeekly Downloads

3,660

Version

0.2.3

License

MIT

Unpacked Size

76.8 kB

Total Files

31

Last publish

Collaborators

  • avatar