process.env.NODE_ENV
Setting process.env.NODE_ENV
is a widespread convention to tell tools whether your app is being run in development or production.
It's important to respect the following convention: many tools run erroneously otherwise.
In development:
- Make sure
process.env.NODE_ENV
is one of these values:['development', 'dev', '', undefined]
. - If you use a server, make sure to use
createDevMiddleware()
for adding the development middleware to your server.
In production (and staging):
- Make sure
process.env.NODE_ENV
is a value different than['development', 'dev', '', undefined]
.Note that:
- Upon starting your server in production, make sure to set
process.env.NODE_ENV
. (E.g.$ NODE_ENV='production' node server/index.js
.) - Upon building (
$ vike build
/$ vike prerender
),process.env.NODE_ENV
is automatically set to'production'
.
- Upon starting your server in production, make sure to set
- Make sure you don't call
createDevMiddleware()
in production: the development middleware isn't needed in production. (It would unnecessarily bloat your production server.) - Make sure you don't mistakenly load Vite in production. (It would significantly bloat your production server.)
See also
- Node.js Docs - The difference between development and production
While the
process.env.NODE_ENV
convention was introduced by Node.js, it's used by tools regardless of whether you use Node.js. Thus, make sure to follow the convention even in non-Node.js environments. - Stack Overflow - What is NODE_ENV and how to use it in Express?