Code Monkey home page Code Monkey logo

Comments (8)

maxbeatty avatar maxbeatty commented on May 22, 2024 3

This is not a regression. We follow semver for versioning, and 1.x.x was a MAJOR release with breaking changes. We purposely removed the ability for this poor practice. If you are overriding variables, you are not treating your environments as unique instances. For example, your database password for staging should be different than production. If you have values that are shared across deploys, they're either insecure or may not be environment variables to begin with.

This module respects process.env over new values being set so if you really need to load two configs you can:

var dotenv = require('dotenv');
dotenv.config({path: '.env.test'}); // most important values
dotenv.config({path: '.env'}); // fill in the gaps

Since we've covered this topic multiple times, I'm going to add it to the FAQ

from dotenv.

siboulet avatar siboulet commented on May 22, 2024

Seems support for that was dropped when doing the 1.0.0 overhaul. Reverting to 0.5.1 works.

from dotenv.

motdotla avatar motdotla commented on May 22, 2024

If you want to stay on 1.x you can instead do something like the following:

var envPath = '/path/to/.env';
if (process.env.NODE_ENV === 'test') {
  envPath = '/path/to/.env.test';
}
require('dotenv').config({path: envPath});

from dotenv.

siboulet avatar siboulet commented on May 22, 2024

@motdotla that wont work, before 1.x we used to be able to "override" by providing .env along side a .env.test. For example, setting different database options in .env.test for when running with NODE_ENV=test, while still using all the other settings from .env.

What you recommend would simply load .env.test instead of .env, not "override" the values from .env with those in .env.test.

from dotenv.

siboulet avatar siboulet commented on May 22, 2024

@motdotla @maxbeatty do you mind keeping this issue open until this is fixed? This is a regression in 1.x. Or do you have no plan for supporting this anymore and officially dropping this from 1.x? Are you open to pull requests, etc.? Please reopen the issue.

Thanks

from dotenv.

jcblw avatar jcblw commented on May 22, 2024

@siboulet I don't think we are going to supporting this anymore. I know we are, for sure, not adding back .env.${NODE_ENV} support and it looks like we are not adding override support #72. I have to say I was open to having override support was not a huge fan of the implementation in this PR. I would say if you can make a compelling enough argument for it you might be able to convince @maxbeatty and @motdotla

from dotenv.

siboulet avatar siboulet commented on May 22, 2024

Thanks for the thorough explanation. This make sense now. And for anyone that really needs to have the override feature and 1.x, she can always use the successive calls to dotenv.config() as mentioned in the comment above. That works for me.

Also might worth removing the mention of .env.$NODE_ENV here to remove any confusion: https://github.com/motdotla/dotenv/blob/master/lib/main.js#L7

Thanks

from dotenv.

sudodoki avatar sudodoki commented on May 22, 2024

I believe comment

Allows configuration before loading .env and .env.$NODE_ENV

Should be changed to account for this breaking change - tried to make .env.test work for some time until reading more code & seeing it's not supported

from dotenv.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.