Simple progress bar for CLI including a simple capture function that handles console input while progress bar is shown.
It captures following commands:
console.log();
console.info();
console.warn();
console.error();
console.debug();
npm i progress-bar-capture
The progress-bar-capture module can be loaded using ESM:
import { ProgressBar } from 'progress-bar-capture';
First you need to integrate the progress-bar-capture into your application:
const progressBar = new ProgressBar(options);
Then you can use start
to print a progress bar to the terminal:
// Start to print the progress bar on terminal
progressBar.start();
Note: this also starts the capturing of console output
Now you can update the value of the progress bar using update
while youre process is been executed:
progressBar.update(25);
// ... do some stuff
progressBar.update(50);
// ... do some stuff
progressBar.update(75);
// ... do some stuff
progressBar.update(100);
When you are finished with your process, you can remove/destroy the progress bar using finish
:
progressBar.finish();
Note: this also stops the capturing of console output
The configuration is optional. Without any manual configuration, progress-bar-capture tries to use reasonable defaults. However, sometimes you may need to change it's configuration.
You can apply a configuration when starting a new instance of progress-bar-capture by providing an object.
const progressBar = new ProgressBar(options);
The object can have following options:
Type: boolean
Default: true || process.stdout.isTTY
In interactive sessions the progress bar is shown in the terminal, while in non-interactive sessions (ussually not a terminal) it is hidden. By default, progress-bar-capture tries to detect whether a session is interative or not.
To explicitly enable or disable interactive sessions, use the isInteractiveSession
function
Type: number
Default: 100
Defines the number that represents 100% in progress of the progress bar.
Type: number
Default: 1
By default progress-bar-capture tries only to print a new progress value to the terminal when using update
if the value has change by more than the value of minChangeOfValue
.
This improves performance and prevents flickering.
Type: number
Default: 1
You can change the number of digits after the decimal point, for the percentage value using percentageFractionDigits
Type: string
Default: ''
You can add an additional prefixed text to the progress bar (e.g. 'Progress') If the string is empty, only the percentage will be displayed.
If you want to run a number of progress-bar-capture functions as a sequence, you can chain them into a single call.
// Start and set a progress
progressBar.start().update(value);
// Restart with a new progress
progressBar.finish().start().update(value);
Copyright (c) 2023-2024 Marina Egner (sheepcs.de). This is free software and may be redistributed under the terms specified in the LICENSE file.