env-config-example
v1.0.0
Published
Simple app to illustrate how to handle environment variables and config in Node.js
Downloads
2
Readme
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)