ahmadnassri/autoenv

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# AutoENV

automatically load dotenv files based on `NODE_ENV`

[![license][license-img]][license-url]
[![release][release-img]][release-url]
[![semantic][semantic-img]][semantic-url]

`autoenv` uses [`dotenv`][] to **automatically** load environment variables from a [compatible][] `.env` file into [`process.env`][].

## Install

``` bash
npm install autoenv
```

## Config

Create a default `.env` file in the root directory of your project.

``` ini
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
```

Create additional `.env.xyz` files matching as many environment variants you want:

``` plain
my_project/
├── .env
├── .env.development
├── .env.staging
└── .env.production
```

The **default** `.env` will always be loaded, if a matching `.env.${NODE_ENV}` file is present, it will be loaded and overrides the values in `.env`

## Usage

As early as possible in your application, require and configure dotenv.

``` js
require('autoenv')
```

When starting your application, ensure `NODE_ENV` is set to the environment name you wish to load.

``` bash
NODE_ENV=staging node index.js
```

``` bash
export NODE_ENV=staging
node index.js
```

### Preload

You can use the `--require` (`-r`) command line option to preload autoenv. By doing this, you do not need to `require` in your application code.

``` bash
node -r autoenv index.js
```

That's it.

`process.env` now has the keys and values you defined in your `.env` file.

``` js
const db = require('db')
db.connect({
  host: process.env.DB_HOST,
  username: process.env.DB_USER,
  password: process.env.DB_PASS
})
```

  [`dotenv`]: https://github.com/motdotla/dotenv/
  [compatible]: #config
  [`process.env`]: https://nodejs.org/docs/latest/api/process.html#process_process_env

----
> Author: [Ahmad Nassri](https://www.ahmadnassri.com/) •
> Twitter: [@AhmadNassri](https://twitter.com/AhmadNassri)

[license-url]: LICENSE
[license-img]: https://badgen.net/github/license/ahmadnassri/node-autoenv

[release-url]: https://github.com/ahmadnassri/node-autoenv/releases
[release-img]: https://badgen.net/github/release/ahmadnassri/node-autoenv

[semantic-url]: https://github.com/ahmadnassri/node-autoenv/actions?query=workflow%3Arelease
[semantic-img]: https://badgen.net/badge/📦/semantically%20released/blue