build.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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, "..", "core/src/worker/json.worker.ts");
  6. const result = await esbuild.build({
  7. entryPoints: [workerEntry],
  8. bundle: true,
  9. write: false,
  10. });
  11. return result.outputFiles[0].text;
  12. };
  13. const buildMain = async ()=>{
  14. const mainEntry = path.join(__dirname, "..", "core/src/index.ts");
  15. const result = await esbuild.build({
  16. entryPoints: [mainEntry],
  17. bundle: true,
  18. packages: 'external',
  19. write: false,
  20. format: 'esm'
  21. });
  22. return result.outputFiles[0].text;
  23. };
  24. const compile = async ()=>{
  25. const workerRaw = await compileWorker();
  26. const mainRaw = await buildMain();
  27. const finalRaw = mainRaw.replaceAll("%WORKER_RAW%", encodeURIComponent(workerRaw));
  28. const saveDir = path.join(__dirname, "..", "core/lib");
  29. if (!fs.existsSync(saveDir)) {
  30. fs.mkdirSync(saveDir);
  31. }
  32. fs.writeFileSync(path.join(saveDir, "index.js"), finalRaw, 'utf8');
  33. };
  34. compile();