重写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');