Override process.stdout.write
or process.stderr.write
with provided alternative
const overrideStdoutWrite = require("process-utils/override-stdout-write");
// Configure decorator that will strip ANSI codes
const {
originalStdoutWrite, // Original `write` bound to `process.stdout`
originalWrite, // Original `write` on its own
restoreStdoutWrite // Allows to restore previous state
} = overrideStdoutWrite(
// process.stdout.write replacement
(
data, // data input
originalStdoutWrite // // Original `write` bound to `process.stdout`
) => {
// Example of filtering ANSI codes for original stdout.write
originalStdoutWrite(stripAnsi(data));
}
);
process.stdout.write(someAnsiCodeDecoratedString); // will be output with ANSI codes stripped out
// Restore previous state
restoreStdoutWrite();
Optionally callback can be passed to override*
, it's invoked immediately, and only for a time of it's execution stream.write
is overriden. if callback returns thenable then stream.write
is restored when given thenable resolves.