env.json is a take on the traditional .env file pattern with an addition to be able to set the default from the same file opposed to additional logic.
npm install env.json```
npm i --save env.json
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 no default value is found, an error is thrown
- 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 thrownHow 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.jsonYou can override this by passing an option:
`
envSetup({ path: './config/env.json', encoding: 'utf16' })
``(see the unit tests for an example in the repo)