Ascii progress-bar(s) in the terminal.
Features:
- Support multi progress-bars.
- Relative and absolute width.
- Colorful bar and text.
- Highly customizable.
$ npm install ascii-progress
For more usage see the examples
const { ProgressBar } = require('ascii-progress');
const bar = new ProgressBar({
schema: ':bar',
total : 10,
});
const iv = setInterval(function () {
bar.tick();
if (bar.completed) {
clearInterval(iv);
}
}, 100);
These are keys in the options object you can pass to the progress bar along with total
as seen in the example above.
schema
- template string of the progress bar. Default" [:bar] :current/:total :percent :elapseds :etas'"
.total
- total number of ticks to complete. Default100
.current
- number of completed ticks. Default0
.width
- display width, percentage or less than1
is relative the terminal's width. Default60
.fixedWidth
- do not adjust the bar based on the terminal sizefilled
- completion character. Default"β"
.blank
- blank character. Default"-"
.clean
- clear the progress bar on completion. Defaultfalse
.callback
- optional function to call when the progress bar completes.
schema
total
current
completed
-
setSchema(schema, refresh/tokens)
- Update the schema of the progress bar. Ifrefresh
ortokens
is truely the progress bar will be refreshed. -
tick(delta, tokens)
- Update ticks of the progress bar bydelta
, then render the progress bar with optionaltokens
. -
update(ratio, tokens)
- Update the progress bar toratio
by percentage, then render the progress bar with optionaltokens
. -
clear()
- Clean the progress bar in the terminal.
The schema defines appearance the progress bar. Few inner tokens and many formatting methods can be used to customer you progress bar.
These are tokens you can use in the format of your progress bar.
:filled
Completed part of the progress bar.:blank
Blank part of the progress bar.:bar
Whole progress bar, equal to:completed:blank
.:current
Current tick number.:total
Total ticks.:percent
Completion percentage.:elapsed
Time elapsed in seconds.:eta
Estimated completion time in seconds.
You can define custom tokens by adding a {name: value}
object parameter to your method (tick()
, update()
, etc.) calls.
const bar = new ProgressBar({
schema: ':current: :token1 :token2',
total : 3,
});
bar.tick({
'token1': "Hello",
'token2': "World!"
})
bar.tick(2, {
'token1': "Goodbye",
'token2': "World!"
})
The above example would result in the output below.
1: Hello World!
3: Goodbye World!
Color names can be use in schema:
:bar.red :percent.green
Then the progress bar will be red, and the percentage will be green.
All available color names:
- red
- cyan
- blue
- grey
- white
- black
- green
- yellow
- magenta
- brightRed
- brightBlue
- brightCyan
- brightWhite
- brightBlack
- brightGreen
- brightYellow
- brightMagenta
And with the bg
prefix, such as bgRed
, the color will be applied to the background.
:bar.red.bgBlue
The above progress bar has blue background and red foreground.
:bar.gradient(red,blue)
The arguments can be color names or hex color:
- red
- cyan
- blue
- grey
- white
- black
- green
- yellow
- magenta
- #xxxxxx
Same as color names, font style can also be assigned by name:
- bold
- italic
- inverse
- underline
:bar.red :percent.green.bold
The percentage is green and bold.
Please let us know how can we help. Do check out issues for bug reports or suggestions first.
To become a contributor, please follow our contributing guide.
The scripts and documentation in this project are released under the MIT License