Readme.md
2.31 KB
Flexible ascii progress bar.
Installation
$ npm install progress
Usage
First we create a ProgressBar, giving it a format string
as well as the total, telling the progress bar when it will
be considered complete. After that all we need to do is tick() appropriately.
var ProgressBar = require('progress');
var bar = new ProgressBar(':bar', { total: 10 });
var timer = setInterval(function () {
bar.tick();
if (bar.complete) {
console.log('\ncomplete\n');
clearInterval(timer);
}
}, 100);
Options
These are keys in the options object you can pass to the progress bar along with
total as seen in the example above.
-
totaltotal number of ticks to complete -
widththe displayed width of the progress bar defaulting to total -
streamthe output stream defaulting to stderr -
completecompletion character defaulting to "=" -
incompleteincomplete character defaulting to "-" -
clearoption to clear the bar on completion defaulting to false -
callbackoptional function to call when the progress bar completes
Tokens
These are tokens you can use in the format of your progress bar.
-
:barthe progress bar itself -
:currentcurrent tick number -
:totaltotal ticks -
:elapsedtime elapsed in seconds -
:percentcompletion percentage -
:etaestimated completion time in seconds
Examples
Download
In our download example each tick has a variable influence, so we pass the chunk length which adjusts the progress bar appropriately relative to the total length.
var ProgressBar = require('../');
var https = require('https');
var req = https.request({
host: 'download.github.com',
port: 443,
path: '/visionmedia-node-jscoverage-0d4608a.zip'
});
req.on('response', function(res){
var len = parseInt(res.headers['content-length'], 10);
console.log();
var bar = new ProgressBar(' downloading [:bar] :percent :etas', {
complete: '=',
incomplete: ' ',
width: 20,
total: len
});
res.on('data', function (chunk) {
bar.tick(chunk.length);
});
res.on('end', function () {
console.log('\n');
});
});
req.end();
The above example result in a progress bar like the one below.
downloading [===== ] 29% 3.7s
You can see more examples in the examples folder.
License
MIT