vue.config.replace.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. const fs = require('fs')
  2. module.exports = {
  3. setData(filePath, updateData = [],savePath='') {
  4. let fileData = this.read(filePath)
  5. for (let i in updateData) {
  6. fileData = this.replaceFile(fileData, i, updateData[i])
  7. }
  8. this.save(savePath?savePath:filePath, fileData)
  9. },
  10. read(filePath) {
  11. let file = fs.readFileSync(filePath, {
  12. encoding: 'utf-8'
  13. })
  14. return file
  15. },
  16. replaceFile(fileData, path, value) {
  17. const arr = path.split('.')
  18. const len = arr.length
  19. const lastItem = arr[len - 1]
  20. let i = 0
  21. let fileArr = fileData.split(/\n/)
  22. for (let index = 0; index < fileArr.length; index++) {
  23. const item = fileArr[index]
  24. if (new RegExp(`"${arr[i]}"`).test(item)) ++i;
  25. if (i === len) {
  26. const hasComma = /,/.test(item)
  27. fileArr[index] = item.replace(new RegExp(`"${lastItem}"[\\s\\S]*:[\\s\\S]*`),
  28. `"${lastItem}": ${value}${hasComma ? ',' : ''}`)
  29. break;
  30. }
  31. }
  32. return fileArr.join('\n')
  33. },
  34. save(filePath, fileData) {
  35. fs.writeFileSync(filePath, fileData, {
  36. "flag": "w"
  37. })
  38. }
  39. }