compileLib.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. const esbuild = require('esbuild');
  2. const path = require('path');
  3. const fs = require('fs');
  4. const compileWorker = async ()=>{
  5. const workerEntry = path.join(__dirname, "..", "src/worker/json.worker.ts");
  6. const result = await esbuild.build({
  7. entryPoints: [workerEntry],
  8. bundle: true,
  9. write: false,
  10. minify: true,
  11. });
  12. return result.outputFiles[0].text;
  13. };
  14. const buildMain = async ()=>{
  15. const mainEntry = path.join(__dirname, "..", "src/index.ts");
  16. const result = await esbuild.build({
  17. entryPoints: [mainEntry],
  18. bundle: true,
  19. packages: 'external',
  20. write: false,
  21. format: 'esm'
  22. });
  23. return result.outputFiles[0].text;
  24. };
  25. const compile = async ()=>{
  26. const workerRaw = await compileWorker();
  27. const mainRaw = await buildMain();
  28. const finalRaw = mainRaw.replaceAll("%WORKER_RAW%", encodeURIComponent(workerRaw));
  29. const saveDir = path.join(__dirname, "..", "lib");
  30. const workerSaveDir = path.join(__dirname, "..", "workerLib");
  31. if (!fs.existsSync(saveDir)) {
  32. fs.mkdirSync(saveDir);
  33. }
  34. if (!fs.existsSync(workerSaveDir)) {
  35. fs.mkdirSync(workerSaveDir);
  36. }
  37. fs.writeFileSync(path.join(workerSaveDir, "worker.js"), workerRaw, 'utf8');
  38. fs.writeFileSync(path.join(saveDir, "index.js"), finalRaw, 'utf8');
  39. };
  40. compile();