在我们做项目时,经常会遇到项目中有些变量或地址会根据不同的环境,有不同的值,这时候可以定义这些变量,在部署前,去进行替换。
- 主要是两个文件 config.json 和 config.js
//config.json
//定义变量名,并赋值占位符
{
"NETWORK": "${network}",
"CHAIN_ID": "${chainId}",
"NODE": "${node}",
"FEE": {"denom":"${denom}","amount":"${amount}"},
}
//conftg.js
//处理替换变量的值
let fs = require('fs');
let program = require('commander');
function list (val) {
return val.split(',')
}
program
.option("-p, <items>","config list" ,list)
.parse(process.argv);
replaceEnv([
"./config/config.json",
],
{
"network": program.P[0],
"chainId": program.P[1],
"node": program.P[2],
"denom": program.P[3],
}
);
function replaceEnv(files, params) {
files.forEach(function(file,index){
let result = fs.readFileSync(file).toString();
for (let key in params) {
let r = "\${"+key+"}";
result = result.replace(new RegExp(r,"g"), params[key]);
}
fs.writeFileSync(file, result)
});
}
- 在package.json中定义执行命令
"scripts": {
"params": "node replace.js -p",
...
},
- 部署前执行命令
npm run params 变量1,变量2,变量3,变量4
即可完成变量替换