Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you load environment variables from .env and .env.local with dotenv?

This might look like a newbie question, but I am unable to find the way to load environment variables from both .env and .env.local files in node with dotenv.

Is it even possible? How do people load environment variables from both files nowadays if not with dotenv?

like image 922
Adrian Avatar asked Aug 31 '25 14:08

Adrian


2 Answers

Quoting from dotenv's npm page

Should I have multiple .env files?

No. We strongly recommend against having a "main" .env file and an "environment" .env file like .env.test. Your config should vary between deploys, and you should not be sharing values between environments.'

But to use .env.local or .env.test or any other environment.. one at a time is

require('dotenv').config({ path: `.env.${process.env.NODE_ENV}` })

If you still want to do it refer to dotenv-flow at https://www.npmjs.com/package/dotenv-flow

dotenv-flow comes with the feature of overwriting variables at environments.


Edit - 2024 March

My above answer might be obsolete now since the package dotenv supports multiple env files for multiple envs via dotenvx - another package from the same creator that claims to be a better dotenv than dotenv.

https://github.com/dotenvx/dotenvx

like image 115
Venkatesh A Avatar answered Sep 02 '25 21:09

Venkatesh A


If .env.local file present dotenv will override .env

dotenv.config();
dotenv.config({ path: `.env.local`, override: true });
like image 39
mat.twg Avatar answered Sep 02 '25 20:09

mat.twg