如何一般性地将现有环境变量更新为.env文件?

时间:2019-04-12 23:52:29

标签: javascript node.js npm environment-variables dotenv

我正在使用dotenv加载env变量并在我的摩卡测试中使用。但是基于为现有环境var之一生成新令牌值的函数,我希望能够将其值一般更新为.env文件。有可能吗?

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

从testSpec.js generate()生成一个我正在解析的新令牌值,即; authToken;我想在.env文件中针对AUTH_TOKEN var进行一般更新,以代替其先前的值。是否可以通过某个lib将其更新值写入/更新到.env?我是nodejs的新手,并使用了npm软件包,感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这是一种可以解决您要执行的操作的方法:

const fs = require('fs');
const envItems = ['BASE_URI', 'C_KEY', 'AUTH_TOKEN' ];
function updateEnv(items){
    var envContents = [];
    items.forEach((item) => {
        envContents.push(item + '=' + process.env[item])  
    })
    fs.writeFileSync('.env', items.join('\n'));
}

在设置auth_token的部分中,您将更新环境变量和.env文件:

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