Skip to content

Spinner & Progress

import { createSpinner } from "@arshad-shah/clif";
const spinner = createSpinner({ text: "Installing dependencies..." });
spinner.start();
// Update mid-task
spinner.update("Compiling TypeScript...");
// Finish with a state
spinner.succeed("Build complete");
// or
spinner.fail("Build failed");
spinner.warn("Build succeeded with warnings");
spinner.info("Build skipped — no changes");
OptionTypeDefaultDescription
textstring""Spinner label
framesstring[]braille dotsAnimation frames
intervalnumber80Frame interval (ms)
colorFormattercyanFrame color
streamWritableStreamstderrOutput stream
prefixTextstring""Text printed before the frame/icon on every line (e.g. a step counter)
suffixTextstring""Text printed after the label on every line
import { createProgress } from "@arshad-shah/clif";
const bar = createProgress({ total: 100 });
for (let i = 0; i < 100; i++) {
await doWork();
bar.tick();
}
// █████████████████████████████░ 97% 97/100
// Or set absolute value
bar.update(50);
OptionTypeDefaultDescription
totalnumberrequiredTotal steps
widthnumber30Bar width in chars
completestringFilled character
incompletestringEmpty character
formatstring:bar :percent :current/:totalOutput format
colorFormattergreenBar color
streamWritableStreamstderrOutput stream