rewriteBuilds.ts 2.0 KB

12345678910111213141516171819202122232425262728
  1. import { readFileSync, writeFileSync, unlinkSync, renameSync } from 'fs';
  2. import { join } from 'path';
  3. const atClass = /\/\*\* \@class \*\//g, pure = '/*#__PURE__*/';
  4. const extraneousExports = /exports\.(.*) = void 0;\n/;
  5. const libDir = join(__dirname, '..', 'lib');
  6. const libIndex = join(libDir, 'index.js');
  7. const lib = readFileSync(libIndex, 'utf-8').replace(atClass, pure).replace(extraneousExports, '');
  8. writeFileSync(libIndex, lib);
  9. const esmDir = join(__dirname, '..', 'esm');
  10. const esmIndex = join(esmDir, 'index.js'),
  11. esmWK = join(esmDir, 'worker.js'),
  12. esmNWK = join(esmDir, 'node-worker.js');
  13. const esm = readFileSync(esmIndex, 'utf-8').replace(atClass, pure);
  14. const wk = readFileSync(esmWK, 'utf-8'),
  15. nwk = readFileSync(esmNWK, 'utf-8');
  16. unlinkSync(esmIndex), unlinkSync(esmWK), unlinkSync(esmNWK), unlinkSync(libIndex);
  17. renameSync(join(libDir, 'worker.js'), join(libDir, 'worker.cjs'));
  18. renameSync(join(libDir, 'node-worker.js'), join(libDir, 'node-worker.cjs'));
  19. unlinkSync(join(libDir, 'worker.d.ts')), unlinkSync(join(libDir, 'node-worker.d.ts'));
  20. const workerImport = /import (.*) from '\.\/node-worker';/;
  21. const workerRequire = /var (.*) = require\("\.\/node-worker"\);/;
  22. const defaultExport = /export default/;
  23. writeFileSync(join(esmDir, 'index.mjs'), esm.replace(workerImport, name => nwk.replace(defaultExport, `var ${name.slice(7, name.indexOf(' ', 8))} =`)));
  24. writeFileSync(join(esmDir, 'browser.js'), esm.replace(workerImport, name => wk.replace(defaultExport, `var ${name.slice(7, name.indexOf(' ', 8))} =`)));
  25. writeFileSync(join(libDir, 'node.cjs'), lib.replace(workerRequire, name => nwk.replace(defaultExport, `var ${name.slice(4, name.indexOf(' ', 5))} =`)));
  26. writeFileSync(join(libDir, 'browser.cjs'), lib.replace(workerRequire, name => wk.replace(defaultExport, `var ${name.slice(4, name.indexOf(' ', 5))} =`)));
  27. writeFileSync(join(libDir, 'index.cjs'), lib.replace(workerRequire, name => `var ${name.slice(4, name.indexOf(' ', 5))} = require("./node-worker.cjs");`));