diff options
Diffstat (limited to 'scripts/buildUMD.ts')
-rw-r--r-- | scripts/buildUMD.ts | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/scripts/buildUMD.ts b/scripts/buildUMD.ts new file mode 100644 index 0000000..fc7037a --- /dev/null +++ b/scripts/buildUMD.ts @@ -0,0 +1,38 @@ +import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs'; +import { minify, MinifyOptions } from 'terser'; +import { join } from 'path'; + +const p = (...fns: string[]) => join(__dirname, '..', ...fns); + +const src = readFileSync(p('lib', 'index.cjs'), 'utf8'); +const worker = readFileSync(p('lib', 'worker.cjs'), 'utf8'); +const nodeWorker = readFileSync(p('lib', 'node-worker.cjs'), 'utf8'); + +const opts: MinifyOptions = { + mangle: { + toplevel: true, + }, + compress: { + passes: 5, + unsafe: true, + pure_getters: true + }, + sourceMap: false +}; + +minify(src, opts).then(async out => { + const wkrOut = (await minify(worker, opts)).code!.replace( + /exports.__esModule=!0;/, + '' + ).replace(/exports\./g, '_f.'); + const nodeWkrOut = (await minify(nodeWorker, opts)).code!.replace( + /exports.__esModule=!0;/, + '' + ); + 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={};" + + out.code!.replace(/exports\.(.*) = void 0;\n/, '').replace(/exports\./g, '_e.').replace(/require\("\.\/node-worker\.cjs"\)/, + "(typeof module!='undefined'&&typeof exports=='object'?function(_f){" + nodeWkrOut + 'return _f}:function(_f){' + wkrOut + 'return _f})({})' + ) + 'return _e})'; + if (!existsSync(p('umd'))) mkdirSync(p('umd')); + writeFileSync(p('umd', 'index.js'), res); +});
\ No newline at end of file |