What is log-update?
The log-update npm package allows you to update the log output in the terminal, effectively enabling you to create dynamic terminal interfaces. It is particularly useful for creating progress bars, status messages, and other real-time updates without cluttering the terminal with multiple lines of output.
What are log-update's main functionalities?
Basic Log Update
This feature allows you to update the log output in the terminal. The initial message 'Hello World' is displayed, and after 1 second, it is updated to 'Updated Hello World'.
const logUpdate = require('log-update');
logUpdate('Hello World');
setTimeout(() => {
logUpdate('Updated Hello World');
}, 1000);
Progress Bar
This feature demonstrates how to create a simple progress indicator using a rotating set of characters. The log output is updated every 80 milliseconds to show a different frame, creating the illusion of a spinning progress bar.
const logUpdate = require('log-update');
const frames = ['-', '\', '|', '/'];
let i = 0;
setInterval(() => {
const frame = frames[i = ++i % frames.length];
logUpdate(`Loading ${frame}`);
}, 80);
Multiple Lines
This feature shows how to update multiple lines of log output. The `render` function updates the terminal with three lines of text, and this update occurs every second.
const logUpdate = require('log-update');
const render = () => {
logUpdate(
'Line 1\n' +
'Line 2\n' +
'Line 3'
);
};
setInterval(render, 1000);
Other packages similar to log-update
ora
Ora is a terminal spinner library that provides a variety of spinner styles and allows for easy integration of spinners into your terminal applications. Unlike log-update, which focuses on updating log output, ora is specifically designed for creating and managing spinners.
cli-progress
cli-progress is a versatile progress bar library for the terminal. It supports multiple progress bars, custom bar styles, and various configuration options. While log-update can be used to create simple progress indicators, cli-progress offers more advanced and customizable progress bar functionalities.
blessed
Blessed is a comprehensive library for creating terminal user interfaces. It supports a wide range of widgets, including text boxes, buttons, and progress bars. Compared to log-update, which is focused on updating log output, blessed provides a full-featured framework for building complex terminal applications.
log-update
Log by overwriting the previous output in the terminal.
Useful for rendering progress bars, animations, etc.
Install
npm install log-update
Usage
import logUpdate from 'log-update';
const frames = ['-', '\\', '|', '/'];
let index = 0;
setInterval(() => {
const frame = frames[index = ++index % frames.length];
logUpdate(
`
♥♥
${frame} unicorns ${frame}
♥♥
`
);
}, 80);
API
logUpdate(text…)
Log to stdout.
logUpdate.clear()
Clear the logged output.
logUpdate.done()
Persist the logged output.
Useful if you want to start a new log session below the current one.
logUpdateStderr(text…)
Log to stderr.
logUpdateStderr.clear()
logUpdateStderr.done()
createLogUpdate(stream, options?)
Get a logUpdate
method that logs to the specified stream.
options
Type: object
showCursor
Type: boolean
Default: false
Show the cursor. This can be useful when a CLI accepts input from a user.
import {createLogUpdate} from 'log-update';
const log = createLogUpdate(process.stdout, {
showCursor: true
});
Examples
- 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