toddbluhm / env-cmd

Setting environment variables from a file
https://www.npmjs.com/package/env-cmd
MIT License
1.73k stars 65 forks source link

Failed to find .env file if options are not in correct order #357

Open kmathmann opened 1 year ago

kmathmann commented 1 year ago

The Problem

I expect that the order of options isn't affecting the execution. These two options should both work the same way.

  1. ./node_modules/.bin/env-cmd -r .env-cmdrc -e development --use-shell 'echo "$TEST"'
  2. ./node_modules/.bin/env-cmd -r .env-cmdrc --use-shell 'echo "$TEST"' -e development

    The position of -e is different

But the second results in the following error while the first one works:

Error: Failed to find .env file at default paths: [./.env,./.env.js,./.env.json]
    at getEnvFile (/<...>/node_modules/env-cmd/dist/get-env-vars.js:58:11)
    at async Object.EnvCmd (/<...>/node_modules/env-cmd/dist/env-cmd.js:39:15)
    at async Object.CLI (/<...>/node_modules/env-cmd/dist/env-cmd.js:19:16)

Why we need -e to be the last option

We are using multiple npm scripts for different environments. For example build:staging and build:prod. To reduce the boilerplate code of repeating everything except the -e option we want to create a general build task without the -e option that can be called in other npm scripts like this: npm run build -e development.