# env-config-example

> Simple app to illustrate how to handle environment variables and config in Node.js

Latest version **1.0.0** (published 2018-10-26) · MIT license · 0 weekly downloads

## Install

```sh
npm install env-config-example
pnpm add env-config-example
yarn add env-config-example
bun add env-config-example
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2018-10-26 |
| First published | 2018-10-26 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 4.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Peter Marklund |
| Maintainers | peter_marklund |
| Keywords | config, env |

## Links

- npm: https://www.npmjs.com/package/env-config-example
- Repository: https://github.com/versioned/node-env-config-example
- Homepage: https://github.com/versioned/node-env-config-example#readme
- Issues: https://github.com/versioned/node-env-config-example/issues
- npm.io page: https://npm.io/package/env-config-example

## Dependencies (1)

- [dotenv](https://npm.io/package/dotenv.md) 6.1.0

## Alternatives

- [replicas-cli](https://npm.io/package/replicas-cli.md) — 3.0K weekly downloads
- [env-contract](https://npm.io/package/env-contract.md) — 133 weekly downloads
- [@openveo/api](https://npm.io/package/@openveo/api.md) — 61 weekly downloads
- [@ryniaubenpm2/cumque-error-reiciendis](https://npm.io/package/@ryniaubenpm2/cumque-error-reiciendis.md) — 54 weekly downloads
- [ts-global-type-extra](https://npm.io/package/ts-global-type-extra.md) — 11 weekly downloads

## Recent versions

- 1.0.0 (latest) — 2018-10-26

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

```javascript
# 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)
```

```javascript
# 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

* [The Twelve Factor App - Config](https://12factor.net/config)
* [dotenv package](https://www.npmjs.com/package/dotenv)
* [config package](https://www.npmjs.com/package/config)
* [env-config package](https://www.npmjs.com/package/env-config)

---
_Source: https://npm.io/package/env-config-example · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
