New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

dotenv-parse-variables

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dotenv-parse-variables

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

  • 2.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

dotenv-parse-variables

build status code coverage code style styled with prettier made with lass license

Parse dotenv files for Boolean, Array, and Number 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) 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).

Options

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 returned

Contributors

NameWebsite
Nick Baughhttp://niftylettuce.com

License

MIT © Nick Baugh

Keywords

FAQs

Package last updated on 12 Feb 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc