env.json
npm i --save env.json
What is it
env.json is a package for managing environment variables for node micro services using a json file.
How it works
The package offers two functions:
- envSetup This will parse the env.json file at the root of your project:
- It will check if the
process.env
contains the provided key, if so continue. - If the
process.env
does not contain the said key but a default option is set, then the default value will be set as the env var - If no
process.env
is found and nodefault
value is found, an error is thrown
- It will check if the
- envGet This will return the value of an environment variable
- You can pass the reference key. This is essentially a proxy to the actual name thus enabling you to ref. keys for alternate env. variables or rename as your app grows.
- You can pass the actual name of the env variable.
- If neither the env var nor ref is found an error is thrown
How to use
First create an env.json
file at the root of your project and ignore it from your git repo (this example demonstrates default values and non-default options):
{
"environment" : {
"key" : "APP_ENVIRONMENT",
"default" : "develop"
},
"url" : {
"key" : "APP_URL",
"default" : "https://github.com/jdcrecur/env.json"
},
"port" : {
"key" : "APP_PORT"
},
"password" : {
"key" : "BASIC_AUTH_PASSWORD"
}
}
Second import the functions to set the environment variables
import {envSetup} from 'env.json'
envSetup()
Third use the data in your app
import {envGet} from 'env.json'
console.log( 'the app is listening on port: ' envGet('port') )
No default
You might want to only set certain config data into the environment variables and not even in the env.json file.
Simply don't pass the default option.
"password" : {
"key" : "BASIC_AUTH_PASSWORD"
}
}
Options
By default the package will try to parse in utf8 format a file at the root of your project named env.json
You can override this by passing an option:
envSetup({ path: './config/env.json', encoding: 'utf16' })
(see the unit tests for an example in the repo)
Suggestions
Welcome, create an issue on github.