重写js文件
'use strict';
/**
* 动态设置环境host.js的地址
* hostUrl => host.js路径
* process.env.npm_config_argv => 返回 {"remain":[],"cooked":["run","dev"],"original":["run","dev"]} | {"remain":[],"cooked":["run","build"],"original":["run","build"]}
* runType => 执行哪个环境
*/
const fs = require('fs');
const path = require('path');
let hostUrl = path.resolve(__dirname, './../request/host.js');
let configArgv = process.env.npm_config_argv;
let runType = JSON.parse(configArgv).cooked[1];
!(function() {
let obj = {};
console.log('runType执行');
if (runType === 'dev') {
console.log('执行线上环境');
obj = {
ex: 'http://xxx.xx.148.81',
hd: 'http://xxx.xx.148.81',
};
}
if (runType === 'build') {
console.log('执行开发环境');
obj = {
ex: 'https://xxx.io',
hd: 'https://xxx.io',
};
}
let routerContent = `export default ${JSON.stringify(obj)}`;
fs.writeFile(hostUrl, routerContent, (err, data) => {
console.log('setHost设置成功');
});
})();
二. 在指定位置插入数据
// 将读取的文件分隔成数据
const data = fs.readFileSync(pathName, 'utf8').split('\n');
// 创建新的数组来保存格式后, 清除空白的数据, 用于后面查找在哪个位置插入数据
let newData = [];
let deletePos = -1;
data.forEach((item, index) => {
// 如果已经赋值过, 则记录下标index, 后面删除
let idx = item.indexOf('siteType');
if (idx > -1) {
deletePos = index;
} else {
newData[index] = item.replace(/\s*/g, '');
}
});
// 找到指定的位置
let pos = newData.indexOf('');
// 删除, 同时下标减一
if (deletePos > -1) {
data.splice(deletePos, 1);
pos = pos - 1;
}
// 追加数据
data.splice(pos, 0, `\t\t`);
// 重新写入数据
fs.writeFileSync(pathName, data.join('\n'), 'utf8');