@southpole/require-env
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

@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

/@southpole/require-env/

    Package Sidebar

    Install

    npm i @southpole/require-env

    Weekly Downloads

    2,475

    Version

    1.0.0

    License

    GPL-3.0

    Unpacked Size

    44.3 kB

    Total Files

    15

    Last publish

    Collaborators

    • igrek8
    • bennycode