automatically load dotenv files based on NODE_ENV
npm install autoenvautomatically 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][].
`` bash`
npm install autoenv
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
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
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/process.env`]: https://nodejs.org/docs/latest/api/process.html#process_process_env
[compatible]: #config
[
----
> Author: Ahmad Nassri •
> Twitter: @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