-
-
Notifications
You must be signed in to change notification settings - Fork 861
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
feat: add option to allow line breaks in values #486
Conversation
This adds an option `{ multiline: "line-breaks" }` that allow values to contain new lines. Closes motdotla#458
} | ||
|
||
try { | ||
// specifying an encoding returns a string instead of a buffer | ||
const parsed = parse(fs.readFileSync(dotenvPath, { encoding }), { debug }) | ||
const parsed = DotEnvModule.parse(fs.readFileSync(dotenvPath, { encoding }), { debug, multiline }) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See https://stackoverflow.com/questions/46124087/sinon-stub-spy-on-local-functions-in-unit-testing for an explanation of why this was necessary
@motdotla what do you think of this change? It seems like a great addition to a very useful tool. |
If anyone is interested in a different solution for this: Even though I made this PR, I ended up just using base64 encoded variables. If you use VSCode, an extension like https://marketplace.visualstudio.com/items?itemName=adamhartford.vscode-base64 makes it very easy to encode/decode (multiline) strings in your You can then use a package like https://www.npmjs.com/package/env-var to manage how you consume the variables in your app: Your
Code: import env from 'env-var';
require('dotenv').config();
const certificate = env
.get("SOME_CERTIFICATE")
.required()
.convertFromBase64()
.asString() |
This is a great addition @andreialecu. Thank you. We might make some small modifications but otherwise, this will be something we release relatively soon. |
fa35ecf
to
0df4843
Compare
This is awesome! It would really help me out! Do you also need to update the |
Would really love to see this in. |
Can we please get this resolved and merged? |
I should be getting this merged and released today. Thank you for your incredible patience. 💛 |
Thank you for this @andreialecu. It's been merged. I will sit on it for a day or two - testing it incrementally by hand. When comfortable then I will release it. Code is very complete but sometimes edge cases sneak in. |
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [dotenv](https://github.com/motdotla/dotenv) | dependencies | major | [`^10.0.0` -> `^16.0.0`](https://renovatebot.com/diffs/npm/dotenv/10.0.0/16.0.3) | --- ### Release Notes <details> <summary>motdotla/dotenv</summary> ### [`v16.0.3`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1603-httpsgithubcommotdotladotenvcomparev1602v1603-2022-09-29) [Compare Source](motdotla/dotenv@v16.0.2...v16.0.3) ##### Changed - Added library version to debug logs ([#​682](motdotla/dotenv#682)) ### [`v16.0.2`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1602-httpsgithubcommotdotladotenvcomparev1601v1602-2022-08-30) [Compare Source](motdotla/dotenv@v16.0.1...v16.0.2) ##### Added - Export `env-options.js` and `cli-options.js` in package.json for use with downstream [dotenv-expand](https://github.com/motdotla/dotenv-expand) module ### [`v16.0.1`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1601-httpsgithubcommotdotladotenvcomparev1600v1601-2022-05-10) [Compare Source](motdotla/dotenv@v16.0.0...v16.0.1) ##### Changed - Minor README clarifications - Development ONLY: updated devDependencies as recommended for development only security risks ([#​658](motdotla/dotenv#658)) ### [`v16.0.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1600-httpsgithubcommotdotladotenvcomparev1501v1600-2022-02-02) [Compare Source](motdotla/dotenv@v15.0.1...v16.0.0) ##### Added - *Breaking:* Backtick support 🎉 ([#​615](motdotla/dotenv#615)) If you had values containing the backtick character, please quote those values with either single or double quotes. ### [`v15.0.1`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1501-httpsgithubcommotdotladotenvcomparev1500v1501-2022-02-02) [Compare Source](motdotla/dotenv@v15.0.0...v15.0.1) ##### Changed - Properly parse empty single or double quoted values 🐞 ([#​614](motdotla/dotenv#614)) ### [`v15.0.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1500-httpsgithubcommotdotladotenvcomparev1432v1500-2022-01-31) [Compare Source](motdotla/dotenv@v14.3.2...v15.0.0) `v15.0.0` is a major new release with some important breaking changes. ##### Added - *Breaking:* Multiline parsing support (just works. no need for the flag.) ##### Changed - *Breaking:* `#` marks the beginning of a comment (UNLESS the value is wrapped in quotes. Please update your `.env` files to wrap in quotes any values containing `#`. For example: `SECRET_HASH="something-with-a-#-hash"`). ..Understandably, (as some teams have noted) this is tedious to do across the entire team. To make it less tedious, we recommend using [dotenv cli](https://github.com/dotenv-org/cli) going forward. It's an optional plugin that will keep your `.env` files in sync between machines, environments, or team members. ##### Removed - *Breaking:* Remove multiline option (just works out of the box now. no need for the flag.) ### [`v14.3.2`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1432-httpsgithubcommotdotladotenvcomparev1431v1432-2022-01-25) [Compare Source](motdotla/dotenv@v14.3.1...v14.3.2) ##### Changed - Preserve backwards compatibility on values containing `#` 🐞 ([#​603](motdotla/dotenv#603)) ### [`v14.3.1`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1431-httpsgithubcommotdotladotenvcomparev1430v1431-2022-01-25) [Compare Source](motdotla/dotenv@v14.3.0...v14.3.1) ##### Changed - Preserve backwards compatibility on exports by re-introducing the prior in-place exports 🐞 ([#​606](motdotla/dotenv#606)) ### [`v14.3.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1430-httpsgithubcommotdotladotenvcomparev1420v1430-2022-01-24) [Compare Source](motdotla/dotenv@v14.2.0...v14.3.0) ##### Added - Add `multiline` option 🎉 ([#​486](motdotla/dotenv#486)) ### [`v14.2.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1420-httpsgithubcommotdotladotenvcomparev1411v1420-2022-01-17) [Compare Source](motdotla/dotenv@v14.1.1...v14.2.0) ##### Added - Add `dotenv_config_override` cli option - Add `DOTENV_CONFIG_OVERRIDE` command line env option ### [`v14.1.1`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1411-httpsgithubcommotdotladotenvcomparev1410v1411-2022-01-17) [Compare Source](motdotla/dotenv@v14.1.0...v14.1.1) ##### Added - Add React gotcha to FAQ on README ### [`v14.1.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1410-httpsgithubcommotdotladotenvcomparev1401v1410-2022-01-17) [Compare Source](motdotla/dotenv@v14.0.1...v14.1.0) ##### Added - Add `override` option 🎉 ([#​595](motdotla/dotenv#595)) ### [`v14.0.1`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1401-httpsgithubcommotdotladotenvcomparev1400v1401-2022-01-16) [Compare Source](motdotla/dotenv@v14.0.0...v14.0.1) ##### Added - Log error on failure to load `.env` file ([#​594](motdotla/dotenv#594)) ### [`v14.0.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1400-httpsgithubcommotdotladotenvcomparev1301v1400-2022-01-16) [Compare Source](motdotla/dotenv@v13.0.1...v14.0.0) ##### Added - *Breaking:* Support inline comments for the parser 🎉 ([#​568](motdotla/dotenv#568)) ### [`v13.0.1`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1301-httpsgithubcommotdotladotenvcomparev1300v1301-2022-01-16) [Compare Source](motdotla/dotenv@v13.0.0...v13.0.1) ##### Changed - Hide comments and newlines from debug output ([#​404](motdotla/dotenv#404)) ### [`v13.0.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1300-httpsgithubcommotdotladotenvcomparev1204v1300-2022-01-16) [Compare Source](motdotla/dotenv@v12.0.4...v13.0.0) ##### Added - *Breaking:* Add type file for `config.js` ([#​539](motdotla/dotenv#539)) ### [`v12.0.4`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1204-httpsgithubcommotdotladotenvcomparev1203v1204-2022-01-16) [Compare Source](motdotla/dotenv@v12.0.3...v12.0.4) ##### Changed - README updates - Minor order adjustment to package json format ### [`v12.0.3`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1203-httpsgithubcommotdotladotenvcomparev1202v1203-2022-01-15) [Compare Source](motdotla/dotenv@v12.0.2...v12.0.3) ##### Changed - Simplified jsdoc for consistency across editors ### [`v12.0.2`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1202-httpsgithubcommotdotladotenvcomparev1201v1202-2022-01-15) [Compare Source](motdotla/dotenv@v12.0.1...v12.0.2) ##### Changed - Improve embedded jsdoc type documentation ### [`v12.0.1`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1201-httpsgithubcommotdotladotenvcomparev1200v1201-2022-01-15) [Compare Source](motdotla/dotenv@v12.0.0...v12.0.1) ##### Changed - README updates and clarifications ### [`v12.0.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1200-httpsgithubcommotdotladotenvcomparev1100v1200-2022-01-15) [Compare Source](motdotla/dotenv@v11.0.0...v12.0.0) ##### Removed - *Breaking:* drop support for Flow static type checker ([#​584](motdotla/dotenv#584)) ##### Changed - Move types/index.d.ts to lib/main.d.ts ([#​585](motdotla/dotenv#585)) - Typescript cleanup ([#​587](motdotla/dotenv#587)) - Explicit typescript inclusion in package.json ([#​566](motdotla/dotenv#566)) ### [`v11.0.0`](https://github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#​1100-httpsgithubcommotdotladotenvcomparev1000v1100-2022-01-11) [Compare Source](motdotla/dotenv@v10.0.0...v11.0.0) ##### Changed - *Breaking:* drop support for Node v10 ([#​558](motdotla/dotenv#558)) - Patch debug option ([#​550](motdotla/dotenv#550)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC43NC4yIiwidXBkYXRlZEluVmVyIjoiMzQuNzQuMiJ9--> Co-authored-by: Renovate Bot <renovate@vylpes.com> Reviewed-on: https://gitea.vylpes.xyz/RabbitLabs/Droplet/pulls/105 Reviewed-by: Vylpes <ethan@vylpes.com> Co-authored-by: RenovateBot <renovate@vylpes.com> Co-committed-by: RenovateBot <renovate@vylpes.com>
Closes #458
This adds an option
{ multiline: "line-breaks" }
that allows values to contain new lines. See https://github.com/bkeepers/dotenv#multi-line-values for an additional explanation.The documentation was updated
Also, in the process I discovered that stubbing
parse
was not working properly in tests, so I changed the exports a bit to fix this and accommodate a new test for this option.