1.0.0 • Published 5 years ago
env-emitter v1.0.0
env-emitter
Node.js module that adds event emitters to process.env. Requires no dependencies.
Installation
npm install env-emitterInclude the module at top of main file. This is only needed once in the application because it replaces the global process.env.
import 'env-emitter'Usage
Listen for get events
import 'env-emitter'
process.env.on('get', event => {
console.log(`Variable ${event.name} used at ${event.caller}`)
})
const test = process.env.FOO_BAR
// outputs: FOO_BAR used at /app/directory/file.js:7:13event properties available:
event.name- Name of variable accessed, such as
NODE_ENV
- Name of variable accessed, such as
event.value- Value of variable accessed (or
undefined)
- Value of variable accessed (or
event.caller- String of where accessed, such as
/app/directory/file.js:7:13
- String of where accessed, such as
event.callerIsCoreNode- Boolean,
trueif variable was accessed from a core Node module. This is helpful for filtering. Example beingconsole.log()access lots of environment variables.
- Boolean,
Listen for set events
import 'env-emitter'
process.env.on('set', event => {
console.log(`Variable ${event.name} changed to ${event.newValue} at ${event.caller}`)
})
process.env.FOO_BAR = 'baz'
// outputs: FOO_BAR changed to baz at /app/directory/file.js:7:13event properties available:
event.name- Name of variable being changed, such as
NODE_ENV
- Name of variable being changed, such as
event.caller- String of where variable is being changed, such as
/app/directory/file.js:7:13
- String of where variable is being changed, such as
event.previousValue- Value of variable BEFORE change (current value)
event.newValue- Value of variable AFTER change (value after any listeners complete)
More examples
Prevent any changes to process.env
process.env.on('set', event => {
throw new Error('Setting environment variables is not allowed')
})Log warning for undefined vars
process.env.on('get', event => {
// skip internal Node usage
if (event.callerIsCoreNode) {
return
}
if (event.value === undefined) {
console.log(`⚠️ ${event.name} at ${event.caller}`)
}
})1.0.0
5 years ago