pack.mjs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /**
  2. * Build JS then zip loadable extension files.
  3. */
  4. import { spawnSync } from "node:child_process";
  5. import { mkdirSync, existsSync } from "node:fs";
  6. import { join, dirname } from "node:path";
  7. import { fileURLToPath } from "node:url";
  8. const root = join(dirname(fileURLToPath(import.meta.url)), "..");
  9. const outDir = join(root, "dist-pack");
  10. const zipPath = join(outDir, "mavi-extension.zip");
  11. const build = spawnSync("bun", ["run", "scripts/build.mjs"], {
  12. cwd: root,
  13. encoding: "utf8",
  14. stdio: "inherit",
  15. });
  16. if (build.status !== 0) process.exit(build.status ?? 1);
  17. mkdirSync(outDir, { recursive: true });
  18. const files = [
  19. "manifest.json",
  20. "popup.html",
  21. "create.html",
  22. "import.html",
  23. "shared.css",
  24. "dist/popup.js",
  25. "dist/create.js",
  26. "dist/import.js",
  27. "icons/16.png",
  28. "icons/48.png",
  29. "icons/128.png",
  30. "icons/mavi.svg",
  31. "README.md",
  32. ];
  33. for (const f of files) {
  34. if (!existsSync(join(root, f))) {
  35. console.error("Missing", f);
  36. process.exit(1);
  37. }
  38. }
  39. const r = spawnSync("zip", ["-r", zipPath, ...files], {
  40. cwd: root,
  41. encoding: "utf8",
  42. });
  43. if (r.status !== 0) {
  44. console.error(r.stderr || r.stdout);
  45. process.exit(r.status ?? 1);
  46. }
  47. console.log("Packed", zipPath);