@47ng/check-env

Check that the critical environment variables are set for your app, and that you did not leave dangerous development overrides in production.

Usage no npm install needed!

<script type="module">
  import 47ngCheckEnv from 'https://cdn.skypack.dev/@47ng/check-env';
</script>

README

check-env

Check that the critical environment variables are set for your app, and that you did not leave dangerous development overrides in production.

NPM MIT License Continuous Integration Coverage Status Dependabot Status

Installation

yarn add @47ng/check-env

Usage

import checkEnv from '@47ng/check-env'

checkEnv({
  // Will log an error and throw if any of these are missing:
  required: [
    'SOME_API_SECRET',
    'PRIVATE_TOKEN',
    'SOME_OTHER_IMPORTANT_THING'
    // ...
  ],

  // Will log an error and throw if any of these are set in production:
  unsafe: [
    'LOCAL_OVERRIDE_DISABLE_HTTPS',
    'INSECURE_COOKIES'
    // ...
  ]
})

If some required environment variable are not set, it will tell you and throw an error at the end: "CLI output"

Error handling

You can choose to skip throwing an error with the noThrow option:

checkEnv({
  noThrow: true,
  ...
})

Conditional Checks

If you want to require some variables only in production, you can add a condition before the variable name, any falsy value will be ignored:

const __PROD__ = process.env.NODE_ENV === 'production'

checkEnv({
  required: [
    'ALWAYS_REQUIRED',
    __PROD__ && 'ONLY_REQUIRED_IN_PRODUCTION',
    !__PROD__ && 'YOU_GET_THE_IDEA'
  ]
})

Logging

By default, check-env uses console.err with emoji.

You can override the default logging methods with logMissing and logUnsafe.

Example using Pino:

const logger = require('pino')()

checkEnv({
  logMissing: name => logger.error(`Missing required environment variable ${name}`),
  logUnsafe: name => logger.warn(`Unsafe environment variable ${name} set in production`),
  ...
})

License

MIT - Made with ❤️ by François Best

Using this package at work ? Sponsor me to help with support and maintenance.