@cpuchain/rollup
Version:
Rollup plugin & config generator for CPUchain TypeScript projects
54 lines (46 loc) • 1.72 kB
text/typescript
import { fileURLToPath } from 'url';
import path from 'path';
import { Worker } from 'worker_threads';
import type { Plugin } from 'rollup';
import { green, greenBright } from 'yoctocolors';
const ___filename = (() => {
try {
return fileURLToPath(import.meta.url);
} catch {
return __filename;
}
})();
const __dirname = path.dirname(___filename);
export function rollupCreateDTS(input: string, output: string): Plugin {
return {
name: 'rollupCreateDTS',
async buildStart() {
await new Promise<void>((resolve, reject) => {
const timeNow = Date.now();
const worker = new Worker(path.resolve(__dirname, './typesWorker.js'), {
workerData: {
input,
output,
},
});
worker.on('exit', (code) => {
if (code === 0) {
const spentTime = Date.now() - timeNow;
const spentTimeFormat =
spentTime > 1000 ? `${(spentTime / 1000).toFixed(1)}s` : `${spentTime}ms`;
const msg =
green('created ') +
greenBright(output) +
green(' in ') +
greenBright(spentTimeFormat);
console.log(msg);
resolve();
} else {
reject(new Error(`Exited while generating ${output} for ${input}`));
}
});
worker.on('error', reject);
});
},
};
}