tsds-publish
Version:
Development stack for TypeScript libraries
35 lines (34 loc) • 1.13 kB
JavaScript
import spawn from 'cross-spawn-cb';
import path from 'path';
import Queue from 'queue-cb';
import rimraf2 from 'rimraf2';
import { wrapWorker } from 'tsds-lib';
import url from 'url';
const __dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);
const major = +process.versions.node.split('.')[0];
const version = major > 18 ? 'local' : 'stable';
const dist = path.join(__dirname, '..');
const workerWrapper = wrapWorker(path.join(dist, 'cjs', 'command.js'));
function worker(_args, options, callback) {
const cwd = options.cwd || process.cwd();
const queue = new Queue(1);
queue.defer(rimraf2.bind(null, path.join(cwd, 'node_modules'), {
disableGlob: true
}));
queue.defer(spawn.bind(null, 'npm', [
'ci'
], {
...options,
cwd
}));
queue.defer(spawn.bind(null, 'npm', [
'test'
], {
...options,
cwd
}));
queue.await(callback);
}
export default function pre(args, options, callback) {
major < 0 ? workerWrapper(version, args, options) : worker(args, options, callback);
}