Socket
Socket
Sign inDemoInstall

@southpole/require-env

Package Overview
Dependencies
0
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @southpole/require-env

Loads environment variables and fails fast if they don't exist.


Version published
Weekly downloads
120
decreased by-52.38%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

@southpole/require-env

This plugin allows you to safely read environment variables from process.env in Node.js. It was built to provide an extra layer of safety as this plugin will throw an error when an environment variable is undefined. You also have the option to provide a default value in case your environment variable cannot be found.

Features

  • Convenient. You can specify default values to avoid undefined values.
  • Reliable. Fails fast if an environment variable is not configured.
  • Typed. Source code is 100% TypeScript.
  • Tested. Code coverage is 100%.

Use Cases

Imagine this is your code:

const variable = process.env.NODE_ENV === 'production' ? 'something-cool' : 'something-strange';

if (variable) {
  console.log(`My code will do something strange now and I won't notice it...`);
}

In case you forget to set process.env.NODE_ENV in your environment, your variable will be set to something-strange. You won't even notice in local development that your variable is unset, because the if-condition is still met. That's where requireEnv comes into play.

With requireEnv your code will fail already in local development when you haven't configured the NODE_ENV environment variable:

import {requireEnv} from '@southpole/require-env';

const variable = requireEnv('NODE_ENV') === 'production' ? 'something-cool' : 'something-strange';

if (variable) {
  console.log(`My code won't reach this line because it will fail early to avoid something strange happening.`);
}

Using requireEnv instead of directly accessing process.env will make your system stop early rather than attempting to continue a flawed state (see fail-fast systems design).

If you prefer, you can also provide meaningful default values:

import {requireEnv} from '@southpole/require-env';

const variable = requireEnv('NODE_ENV', 'development');

if (variable) {
  console.log('My app will still work as there is a default value.');
}

Recommendation

  1. Replace all accesses to process.env with requireEnv in your code
  2. Avoid using defaults to make sure your config is set up properly
  3. Activate the node/no-process-env rule using eslint-plugin-node

Keywords

FAQs

Last updated on 08 Jun 2022

Did you know?

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc