const fs = require('fs') module.exports = { setData(filePath, updateData = [],savePath='') { let fileData = this.read(filePath) for (let i in updateData) { fileData = this.replaceFile(fileData, i, updateData[i]) } this.save(savePath?savePath:filePath, fileData) }, read(filePath) { let file = fs.readFileSync(filePath, { encoding: 'utf-8' }) return file }, replaceFile(fileData, path, value) { const arr = path.split('.') const len = arr.length const lastItem = arr[len - 1] let i = 0 let fileArr = fileData.split(/\n/) for (let index = 0; index < fileArr.length; index++) { const item = fileArr[index] if (new RegExp(`"${arr[i]}"`).test(item)) ++i; if (i === len) { const hasComma = /,/.test(item) fileArr[index] = item.replace(new RegExp(`"${lastItem}"[\\s\\S]*:[\\s\\S]*`), `"${lastItem}": ${value}${hasComma ? ',' : ''}`) break; } } return fileArr.join('\n') }, save(filePath, fileData) { fs.writeFileSync(filePath, fileData, { "flag": "w" }) } }