Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Return boolean values instead of "true"/"false" strings. #247

Closed
wants to merge 1 commit into from

Conversation

becdot
Copy link

@becdot becdot commented Nov 28, 2017

When boolean values are set in an .env file (e.g. IS_PRODUCTION=false), it's expected that these will be evalulated as booleans, instead of the string "false" (which is actually truthy). This causes particular problems when using webpack and webpack.DefinePlugin, since providing JSON.stringify(process.env.IS_PRODUCTION) will evaluate as truthy, which is unexpected.

Instead, change "true" to true and "false" to false when parsing the .env file.

@coveralls
Copy link

coveralls commented Nov 28, 2017

Coverage Status

Coverage decreased (-2.3%) to 97.674% when pulling a226ac2 on becdot:becdot_eval_booleans into 46ec97d on motdotla:master.

@coveralls
Copy link

coveralls commented Nov 28, 2017

Coverage Status

Coverage remained the same at 100.0% when pulling 9a49866 on becdot:becdot_eval_booleans into 46ec97d on motdotla:master.

@coveralls
Copy link

Coverage Status

Coverage remained the same at 100.0% when pulling d5442f9 on becdot:becdot_eval_booleans into 46ec97d on motdotla:master.

1 similar comment
@coveralls
Copy link

coveralls commented Nov 28, 2017

Coverage Status

Coverage remained the same at 100.0% when pulling d5442f9 on becdot:becdot_eval_booleans into 46ec97d on motdotla:master.

When boolean values are set in an .env file (e.g. IS_PRODUCTION=false), it's expected that these will be evalulated as booleans, instead of the string "false" (which is truthy).  This causes particular problems when using webpack and webpack.DefinePlugin, since providing `JSON.stringify(process.env.IS_PRODUCTION` will evaluate as a string, which is unexpected.

Instead, change `"true"` to `true` and `"false"` to `false` when evaluating the .env file.
@coveralls
Copy link

coveralls commented Nov 28, 2017

Coverage Status

Coverage remained the same at 100.0% when pulling 27cfacf on becdot:becdot_eval_booleans into 46ec97d on motdotla:master.

@maxbeatty
Copy link
Contributor

Thanks but we keep them as strings to align with how process.env behaves

Assigning a property on process.env will implicitly convert the value to a string.
Node.js

envalid will do type conversion for you or you could write your own module focused on boolean behavior.

dotenv.config()
convertBooleans(process.env)

@maxbeatty maxbeatty closed this Nov 29, 2017
@becdot
Copy link
Author

becdot commented Nov 29, 2017

That makes sense -- thanks for the explanation!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants