rewriteBuilds.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { readFileSync, writeFileSync, unlinkSync, renameSync } from 'fs';
  2. import { join } from 'path';
  3. const atClass = /\/\*\* \@class \*\//g, pure = '/*#__PURE__*/';
  4. const esModule = /exports.__esModule = true;\n/;
  5. const libDir = join(__dirname, '..', 'lib');
  6. const libIndex = join(libDir, 'index.js');
  7. const lib = readFileSync(libIndex, 'utf-8')
  8. .replace(atClass, pure)
  9. .replace(esModule, '')
  10. .replace(/exports\.(.*) = void 0;\n/, '');
  11. writeFileSync(libIndex, lib);
  12. const esmDir = join(__dirname, '..', 'esm');
  13. const esmIndex = join(esmDir, 'index.js'),
  14. esmWK = join(esmDir, 'worker.js'),
  15. esmNWK = join(esmDir, 'node-worker.js'),
  16. libWK = join(libDir, 'worker.js'),
  17. libNWK = join(libDir, 'node-worker.js');
  18. const esm = readFileSync(esmIndex, 'utf-8').replace(atClass, pure);
  19. const wk = readFileSync(esmWK, 'utf-8'),
  20. nwk = readFileSync(esmNWK, 'utf-8');
  21. writeFileSync(join(libDir, 'worker.cjs'), readFileSync(join(libDir, 'worker.js'), 'utf-8').replace(esModule, ''));
  22. writeFileSync(join(libDir, 'node-worker.cjs'), readFileSync(join(libDir, 'node-worker.js'), 'utf-8').replace(esModule, ''));
  23. unlinkSync(esmIndex), unlinkSync(esmWK), unlinkSync(esmNWK), unlinkSync(libIndex), unlinkSync(libWK), unlinkSync(libNWK);
  24. unlinkSync(join(libDir, 'worker.d.ts')), unlinkSync(join(libDir, 'node-worker.d.ts'));
  25. const workerImport = /import (.*) from '\.\/node-worker';/;
  26. const workerRequire = /var (.*) = require\("\.\/node-worker"\);/;
  27. const defaultExport = /export default/;
  28. writeFileSync(join(esmDir, 'index.mjs'), "import { createRequire } from 'module';\nvar require = createRequire('/');\n" + esm.replace(workerImport, name => nwk.replace(defaultExport, `var ${name.slice(7, name.indexOf(' ', 8))} =`)));
  29. writeFileSync(join(esmDir, 'browser.js'), esm.replace(workerImport, name => wk.replace(defaultExport, `var ${name.slice(7, name.indexOf(' ', 8))} =`)));
  30. writeFileSync(join(libDir, 'node.cjs'), lib.replace(workerRequire, name => {
  31. name = name.slice(4, name.indexOf(' ', 5));
  32. return nwk.replace(defaultExport, `var ${name} = {};\n${name}["default"] =`)
  33. }));
  34. writeFileSync(join(libDir, 'browser.cjs'), lib.replace(workerRequire, name => {
  35. name = name.slice(4, name.indexOf(' ', 5));
  36. return wk.replace(defaultExport, `var ${name} = {};\n${name}["default"] =`)
  37. }));
  38. writeFileSync(join(libDir, 'index.cjs'), lib.replace(workerRequire, name => `var ${name.slice(4, name.indexOf(' ', 5))} = require("./node-worker.cjs");`));