modifyManifest.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. let env = require('./env.js')
  2. const {PLATFORM} = env
  3. const fs = require("fs");
  4. //此处如果是用HBuilderX创建的项目manifest.json文件在项目跟目录,如果是 cli 创建的则在 src 下,这里要注意
  5. //process.env.UNI_INPUT_DIR为项目所在的绝对路径,经测试,相对路径会找不到文件
  6. const revert = process.argv[process.argv.length - 1];
  7. // 根据还原参数区分使用原路径(最后执行命令的时候已经没有UNI全局变量了)
  8. const root = revert == "revert" ? "src" : process.env.UNI_INPUT_DIR;
  9. const manifestPath = root + "/manifest.json";
  10. let Manifest = fs.readFileSync(manifestPath, {
  11. encoding: "utf-8",
  12. });
  13. // console.log(Manifest,'ManifestManifest')
  14. function replaceManifest(path, value) {
  15. const arr = path.split(".");
  16. const len = arr.length;
  17. const lastItem = arr[len - 1];
  18. let i = 0;
  19. let ManifestArr = Manifest.split(/\n/);
  20. for (let index = 0; index < ManifestArr.length; index++) {
  21. const item = ManifestArr[index];
  22. if (new RegExp(`"${arr[i]}"`).test(item)) ++i;
  23. if (i === len) {
  24. const hasComma = /,/.test(item);
  25. ManifestArr[index] = item.replace(
  26. new RegExp(`"${lastItem}"[\\s\\S]*:[\\s\\S]*`),
  27. `"${lastItem}" : ${value}${hasComma ? "," : ""}`
  28. );
  29. break;
  30. }
  31. }
  32. Manifest = ManifestArr.join("\n");
  33. }
  34. // 动态配置appid
  35. if (PLATFORM === "enterprises") {
  36. // 企事业
  37. let title = '"巡逻鹰GPS"'
  38. replaceManifest("name", title);
  39. replaceManifest("h5.router.base", '"/mobile/"');
  40. replaceManifest("h5.title", title);
  41. } else if (PLATFORM === "sanitation") {
  42. // 环卫
  43. let title = '"智慧环卫一体化管理平台"'
  44. replaceManifest("name", title);
  45. replaceManifest("h5.router.base", '"/mobile/"');
  46. replaceManifest("h5.title", title);
  47. } else if (PLATFORM === "mine") {
  48. // 矿山
  49. let title = '"矿山车辆管理平台"'
  50. replaceManifest("name", '"矿山车辆管理平台"');
  51. replaceManifest("h5.router.base", '"/mobileMine/"');
  52. replaceManifest("h5.title", title);
  53. }
  54. // console.log(Manifest,'Manifest')
  55. fs.writeFileSync(manifestPath, Manifest, {
  56. flag: "w",
  57. });