Use Ora in Node.js Worker threads
mainOra cannot animate inside Worker threads because they are not considered interactive terminal environments. To use Ora with workers, run the spinner in the main thread and communicate status updates (like text changes or completion) from the worker via messages.
// main.js
import {Worker} from 'node:worker_threads';
import ora from 'ora';
const spinner = ora().start();
const worker = new Worker('./worker.js');
worker.on('message', message => {
switch (message.type) {
case 'ora:text':
spinner.text = message.text;
break;
case 'ora:succeed':
spinner.succeed(message.text);
break;
case 'ora:fail':
spinner.fail(message.text);
break;
}
});
// worker.js
import {parentPort} from 'node:worker_threads';
parentPort.postMessage({type: 'ora:text', text: 'Working...'});
// Do work...
parentPort.postMessage({type: 'ora:succeed', text: 'Done!'});