Search code examples
node.jsnpmdotenv

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?


Solution

  • 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