buildUMD.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
  2. import { minify, MinifyOptions } from 'terser';
  3. import { join } from 'path';
  4. const p = (...fns: string[]) => join(__dirname, '..', ...fns);
  5. const src = readFileSync(p('lib', 'index.cjs'), 'utf8');
  6. const worker = readFileSync(p('lib', 'worker.cjs'), 'utf8');
  7. const nodeWorker = readFileSync(p('lib', 'node-worker.cjs'), 'utf8');
  8. const opts: MinifyOptions = {
  9. mangle: {
  10. toplevel: true,
  11. },
  12. compress: {
  13. passes: 5,
  14. unsafe: true,
  15. pure_getters: true
  16. },
  17. sourceMap: false
  18. };
  19. minify(src, opts).then(async out => {
  20. const wkrOut = (await minify(worker, opts)).code!.replace(
  21. /exports.__esModule=!0;/,
  22. ''
  23. ).replace(/exports\./g, '_f.');
  24. const nodeWkrOut = (await minify(nodeWorker, opts)).code!.replace(
  25. /exports.__esModule=!0;/,
  26. ''
  27. );
  28. const res = "!function(f){typeof module!='undefined'&&typeof exports=='object'?module.exports=f():typeof define!='undefined'&&define.amd?define(['fflate',f]):(typeof self!='undefined'?self:this).fflate=f()}(function(){var _e={};" +
  29. out.code!.replace(/exports\.(.*) = void 0;\n/, '').replace(/exports\./g, '_e.').replace(/require\("\.\/node-worker\.cjs"\)/,
  30. "(typeof module!='undefined'&&typeof exports=='object'?function(_f){" + nodeWkrOut + 'return _f}:function(_f){' + wkrOut + 'return _f})({})'
  31. ) + 'return _e})';
  32. if (!existsSync(p('umd'))) mkdirSync(p('umd'));
  33. writeFileSync(p('umd', 'index.js'), res);
  34. });