Log by overwriting the previous output in the terminal.
Useful for rendering progress bars, animations, etc.
It performs partial redraws when possible to reduce flicker.
npm install log-update
import logUpdate from 'log-update';
const frames = ['-', '\\', '|', '/'];
let index = 0;
setInterval(() => {
const frame = frames[index = ++index % frames.length];
logUpdate(
`
♥♥
${frame} unicorns ${frame}
♥♥
`
);
}, 80);
You can use yoctocolors or chalk to colorize the output.
Log to stdout.
Clear the logged output.
Persist the logged output.
Useful if you want to start a new log session below the current one.
Write text to the terminal that persists, similar to console.log()
.
Unlike the main logUpdate()
method which updates in place, persist()
writes to the terminal in a way that preserves the output in the scrollback history.
import logUpdate from 'log-update';
// Update in place
logUpdate('Processing...');
logUpdate('Still processing...');
// Write permanent output
logUpdate.persist('✓ Task complete');
// Continue updating
logUpdate('Next task...');
Log to stderr.
Get a logUpdate
method that logs to the specified stream.
Type: object
Type: boolean
Default: false
Show the cursor. This can be useful when a CLI accepts input from a user.
import {createLogUpdate} from 'log-update';
// Write output but don't hide the cursor
const log = createLogUpdate(process.stdout, {
showCursor: true
});
Type: number
Default: 80
The width to use when the stream doesn't provide a columns
property.
This is useful when the output is piped, redirected, or in environments where the terminal size is not available.
import {createLogUpdate} from 'log-update';
// Use custom width when the stream doesn't provide columns
const log = createLogUpdate(process.stdout, {
defaultWidth: 120
});
Type: number
Default: 24
The height to use when the stream doesn't provide a rows
property.
This is useful when the output is piped, redirected, or in environments where the terminal size is not available.
import {createLogUpdate} from 'log-update';
// Use custom height when the stream doesn't provide rows
const log = createLogUpdate(process.stdout, {
defaultHeight: 50
});
- listr - Uses this module to render an interactive task list
- ora - Uses this module to render awesome spinners
- speed-test - Uses this module to render a spinner