'How to create a build for multiple environments in Nuxt?

I am building a Nuxt application where I will have two environments staging and production, the local should also be considered as staging, now I need to create some commands and generate builds for production and staging, which will be deployed on two separate servers.

I have two questions

  1. The command
npm run generate

always generate a production build, I checked it using

console.log(process.env.NODE_ENV)

How can I generate a new build where the env should be something like staging?

  1. I want to create some .env files for holding some env related variables, but I am confused about how can I create multiple env files for multiple envs (staging and production).

I understand my question is a bit of research orientation, I spent days researching on the internet, but either the blogs are unrelated or confusing. I never really got what I was looking for, can someone point me into the right direction?



Solution 1:[1]

As told above, you can do
NODE_ENV="staging" npm run generate
while building the app, even tho this is not recommended and you should probably just use another env variable like ENV and make conditionals based on this one for your app.

If you want more details on how to use env variables, you can look at this answer.

Then, the way env variables work still applies to what I said about AWS/Heroku etc...

Solution 2:[2]

use nuxt --dotenv and pass the path to your env file like .env.production Example package.json:

{
  "scripts":{
    "prod":"NODE_ENV=production && nuxt --dotenv .env.production"
  }
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 kissu
Solution 2 ihorbond