compileLib.js 1.5 KB

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