1.0.0 • Published 6 years ago

env-config-example v1.0.0

Weekly downloads
4
License
MIT
Repository
github
Last release
6 years ago

env-config-2: Node.js Package to Handle Environment Variables and Config

The goals of this package are:

  • To adhere to the Twelve Factor App principle of allowing config to be specified via environment variables so that we can have complete control over it for each environment that we may need (development, staging, production etc.)
  • To support setting config variables with environment variables so that we can avoid having sensitive information such as passwords in the source code
  • To be able to have convenient non-sensitve config defaults in the source code for the development environment to avoid the developer having to set a bunch of environment variables just to run the application in dev.
  • To support a .env file that is not under version control where developers can conveniently override config settings on a case-by-case basis in development

Installation

With npm:

npm install env-config-2 --save

With yarn:

yarn add env-config-2

Example Usage in an API Node.js App

# File: config.js
const envConfig = require('env-config-2')

const {NODE_ENV} = process.env
const defaultConfig ={
  NODE_ENV,
  PORT: (NODE_ENV === 'development' ? 3000 : null),
  MONGODB_URL: `mongodb://localhost:27017/node_env_config_example_${NODE_ENV}`,
  JWT_SECRET: (NODE_ENV === 'development' ? 'foobar' : null),
  JWT_EXPIRY: (3600 * 24 * 30),
  RATE_LIMIT: (NODE_ENV === 'production' ? 5 : null),
  ALGOLIASEARCH_APPLICATION_ID: null,
  ALGOLIASEARCH_API_KEY: null,
  ALGOLIASEARCH_API_KEY_SEARCH: null,
  API_BASE_URL: (NODE_ENV === 'development' ? 'http://localhost:3000/v1' : 'https://api.versioned.io/v1')
}

module.exports = envConfig.generateConfig(defaultConfig)
# File: index.js
const http = require('http')
const config = require('config')

function handler (request, response) {
   response.writeHead(200, {'Content-Type': 'text/plain'})
   response.end('Hello World')
}

const server = http.createServer(handler).listen(config.PORT)
console.log('Server started with config:', config)

Resources