Simplify Node.js Configuration with .env Files
There's more to the new .env support than I noticed originally.
Since the release of Node.js 20.6.0, there has been native support for .env
files. I didn't notice that we can now add our runtime options to this file. Here's how:
The Old Way
Traditionally, when we wanted to run a Node.js application with specific runtime options, we'd do something like this:
node --max-old-space-size=4096 --trace-warnings --experimental-fetch app.js
Or, we might create a script in our package.json
:
{ "scripts": { "start": "node --max-old-space-size=4096 --trace-warnings --experimental-fetch app.js" } }
This approach works, but it can lead to long, unwieldy commands and cluttered script definitions.
The New Way
I recently discovered that runtime options support directly from your .env
file.
Create a .env
file in our project root and add NODE_OPTIONS
alongside your existing options:
NODE_OPTIONS="--max-old-space-size=4096 --trace-warnings" API_KEY="your-secret-api-key"
And run our application like this:
node --env-file=.env app.js
That's it!
Node.js will automatically apply the options specified in NODE_OPTIONS
and make any other variables (like API_KEY
) available in process.env
.
Allowing developers to specify command-line options in a .env
really cleans things up! 🧽