env.json

2.0.1 • Public • Published

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 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 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.

Package Sidebar

Install

npm i env.json

Weekly Downloads

157

Version

2.0.1

License

MIT

Last publish

Collaborators

  • johncarmichael