项目中设置变量,部署时命令替换变量

283 阅读1分钟

在我们做项目时,经常会遇到项目中有些变量或地址会根据不同的环境,有不同的值,这时候可以定义这些变量,在部署前,去进行替换。

  • 主要是两个文件 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

即可完成变量替换