Skip to content

Repository files navigation

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.

varProgressBar=require('progress');varbar=newProgressBar(':bar',{total: 10});vartimer=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.

  • total total number of ticks to complete
  • width the displayed width of the progress bar defaulting to total
  • stream the output stream defaulting to stderr
  • complete completion character defaulting to "="
  • incomplete incomplete character defaulting to "-"
  • renderThrottle minimum time between updates in milliseconds defaulting to 16
  • clear option to clear the bar on completion defaulting to false
  • callback optional function to call when the progress bar completes

Tokens

These are tokens you can use in the format of your progress bar.

  • :bar the progress bar itself
  • :current current tick number
  • :total total ticks
  • :elapsed time elapsed in seconds
  • :percent completion percentage
  • :eta estimated completion time in seconds

Custom Tokens

You can define custom tokens by adding a {'name': value} object parameter to your method (tick(), update(), etc.) calls.

varbar=newProgressBar(':current: :token1 :token2',{total: 3})bar.tick({'token1': "Hello",'token2': "World!\n"})bar.tick(2,{'token1': "Goodbye",'token2': "World!"})

The above example would result in the output below.

1: Hello World!
3: Goodbye World!

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.

varProgressBar=require('../');varhttps=require('https');varreq=https.request({host: 'download.github.com',port: 443,path: '/visionmedia-node-jscoverage-0d4608a.zip'});req.on('response',function(res){varlen=parseInt(res.headers['content-length'],10);console.log();varbar=newProgressBar(' 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

About

Flexible ascii progress bar for nodejs

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages