How to generically update an existing environment variable to .env file?

I am using dotenv to load env variables and use in my mocha test. But based on a function that is generating a new token value for one of the existing environment var, I want to be able to generically update its value to .env file. Is it possible?

testSpec.js :

require('dotenv').config()
const webapi = require('../libs/webapi')

async function getVal() {
//to generate a new token using existing one
token = webapi.generate( process.env.BASE_URI, process.env.C_KEY, process.env.AUTH_TOKEN)
token.then(response => {
        obj = JSON.parse(response.body)
        authToken = obj.auth_token
})
}

.env :

BASE_URI= https://www.smthing.com
C_KEY=12456704-fedrfg1-7840-00002345
AUTH_TOKEN=75638391-9c5c-d690-4fd53456

From testSpec.js generate() generates a new token value that I’m parsing i.e; authToken ; that I want to generically update in the .env file for AUTH_TOKEN var in place of its previous value. Is it possible to write/update to .env for its updated value through some lib? I am new to nodejs and using npm packages, any help appreciated.

1 thought on “How to generically update an existing environment variable to .env file?”

  1. Here’s an approach that can perhaps address what you’re trying to do:

        const fs = require('fs');
        const envItems = ['BASE_URI', 'C_KEY', 'AUTH_TOKEN'];
        function updateEnv(items = [], eol = '\n'){
          const envContents = items
            .map(item => `${item}=${process.env[item]}`)
            .join(eol)
          fs.writeFileSync('.env', envContents);
        }
    

    In the part where you set your auth_token, you’d update the environment variable and .env file:

    process.env.AUTH_TOKEN = obj.auth_token;
    updateEnv(envItems);
    
    Reply

Leave a Comment