prebuild.mjs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { writeFileSync, readFileSync } from "fs";
  2. import { execSync } from "child_process";
  3. import moment from "moment";
  4. import packageJson from "./package.json" assert { type: "json" };
  5. console.log("> prebuild");
  6. console.log(process.argv);
  7. if (process.argv.length < 3) {
  8. console.log(
  9. "命令格式:\nnode --experimental-json-modules prebuild.mjs [mode]"
  10. );
  11. process.exit(1);
  12. }
  13. console.log("删除license注释,避免混淆文件被推测");
  14. let str = readFileSync(
  15. "./node_modules/pinia/dist/pinia.esm-browser.js"
  16. ).toString();
  17. console.log(
  18. str.slice(0, 100),
  19. str.replace(/\s+\* @license MIT\s*/, "").slice(0, 100)
  20. );
  21. writeFileSync(
  22. "./node_modules/pinia/dist/pinia.esm-browser.js",
  23. str.replace(/\s+\* @license MIT\s*/, "")
  24. );
  25. str = readFileSync("./node_modules/js-md5/src/md5.js").toString();
  26. writeFileSync(
  27. "./node_modules/js-md5/src/md5.js",
  28. str.replace(/\s+\* @license MIT\s*/, "")
  29. );
  30. str = readFileSync(
  31. "./node_modules/sortablejs/modular/sortable.esm.js"
  32. ).toString();
  33. writeFileSync(
  34. "./node_modules/sortablejs/modular/sortable.esm.js",
  35. str.replace(/\s+\* @license MIT\s*/, "")
  36. );
  37. const mode = process.argv[2];
  38. const validModes = ["production", "staging", "test", "dev"];
  39. if (!validModes.includes(mode)) {
  40. console.log(`mode: ${mode} 不合法,合法的mode为 `, validModes);
  41. process.exit(1);
  42. }
  43. const localEnv = ".env." + mode + ".local";
  44. console.log("> prebuild create " + localEnv);
  45. // const packageJson = require("./package.json");
  46. const buildDate = moment().format("YYYY-MM-DD HH:mm:ss");
  47. console.log(" 构建日期为 " + buildDate);
  48. // eslint-disable-next-line @typescript-eslint/no-unsafe-call
  49. const revision = execSync("git rev-parse HEAD").toString().trim().slice(0, 7);
  50. console.log(" 当前的git版本为 " + revision);
  51. // eslint-disable-next-line @typescript-eslint/no-unsafe-call
  52. writeFileSync(
  53. localEnv,
  54. `VITE_FE_VERSION=${packageJson.version}
  55. VITE_BUILD_DATE=${buildDate}
  56. VITE_GIT_REPO_VERSION=${revision}
  57. `
  58. );
  59. console.log();