When developing cross-platform Node.js applications/testing frameworks, environment variables can sometimes cause frustrating issues—especially when switching between Windows, macOS, and Linux. That’s where cross-env
comes to the rescue.
In this tutorial, we’ll explore what cross-env
is, why you need it, and how to integrate it into your project.
What is cross-env?
cross-env
is a simple npm package that allows you to set environment variables across different platforms in a consistent way.
Why is it needed?
Different operating systems handle environment variables differently:
Unix-based systems (Linux/macOS): You can set variables like
NODE_ENV=production
.Windows: That same syntax doesn’t work. Windows uses a different method (
set NODE_ENV=production
).
So if you have a script like this in your package.json
:
“scripts”: {
“start”: “NODE_ENV=production node server.js”
}
It will break on Windows. Enter cross-env
.
Installing cross-env
To install it, use either npm or Yarn:
npm install --save-dev cross-env
# or
yarn add --dev cross-env
This adds it as a development dependency, since it’s only needed during script execution.
How to use it
Simply prefix your command with cross-env
, and it will take care of setting the environment variable appropriately for any OS.
Without cross-env (UNIX-only)
"scripts": {
"start": "NODE_ENV=production node server.js"
}
With cross-env (cross-platform)
"scripts": {
"start": "npx cross-env NODE_ENV=production node server.js"
}
That’s it. Now it works the same on Windows, macOS, and Linux.
Enjoyed this article? Make sure to subscribe to my YouTube Channel for more Test Automation tutorials, and follow me on LinkedIn and Twitter for regular insights.
Looking to improve your test automation skills?
I’ve created a personalized 1-on-1 Mentoring program refined to boost YOUR CURRENT skills. Reach out at iamrv@razvanvancea.ro for more details and together will create a learning path adapted to your skills and goals that you are aiming for, in a timely-efficient manner🚀