UNPKG

tsds-build

Version:

Development stack for TypeScript libraries

47 lines (46 loc) 1.72 kB
import spawn from 'cross-spawn-cb'; import { safeRm } from 'fs-remove-compat'; import { installSync } from 'install-optional'; import debounce from 'lodash.debounce'; import { bind } from 'node-version-call'; import path from 'path'; import Queue from 'queue-cb'; import resolveBin from 'resolve-bin-sync'; import url from 'url'; const major = +process.versions.node.split('.')[0]; const __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename); const dist = path.join(__dirname, '..', '..'); const installSyncRollup = debounce(installSync, 300, { leading: true, trailing: false }); function run(_args, options, callback) { const cwd = options.cwd || process.cwd(); const dest = path.join(cwd, 'dist', 'umd'); const configRoot = path.join(dist, 'esm', 'rollup'); try { installSyncRollup('rollup', `${process.platform}-${process.arch}`, { cwd }); const rollup = resolveBin('rollup'); const queue = new Queue(1); queue.defer((cb)=>safeRm(dest, (err)=>cb(err))); queue.defer(spawn.bind(null, rollup, [ '--config', path.join(configRoot, 'config.js') ], options)); queue.defer(spawn.bind(null, rollup, [ '--config', path.join(configRoot, 'config.min.js') ], options)); queue.await(callback); } catch (err) { return callback(err instanceof Error ? err : new Error(String(err))); } } const worker = major >= 20 ? run : bind('>=20', path.join(dist, 'cjs', 'lib', 'umd.js'), { callbacks: true }); export default function umd(args, options, callback) { worker(args, options, callback); }