Check that the critical environment variables are set for your app, and that you did not leave dangerous development overrides in production.
yarn add @47ng/check-env
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:
You can choose to skip throwing an error with the noThrow
option:
checkEnv({
noThrow: true,
...
})
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'
]
})
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`),
...
})
MIT - Made with ❤️ by François Best
Using this package at work ? Sponsor me to help with support and maintenance.