ora
知是行之始、行是知之成
终端中的loading
安装
$ npm install ora
使用
import ora from 'ora';
const spinner = ora('Loading unicorns').start();
setTimeout(() => {
spinner.color = 'yellow';
spinner.text = 'Loading rainbows';
}, 1000);
执行会报错、无法使用es module 需要在package.json中配置type: module
具体api在如下demo中使用
import chalk from 'chalk';
import logSymbols from 'log-symbols'; // 前置图标库
import ora from 'ora';
const spinner = ora({
discardStdin: false,
text: 'loading',// 文本
// 不传入使用默认的dots
// spinner: {
// interval: 80,
// frames: ['+', '-', '+']
// },
});
const spinnerDiscardingStdin = ora({
text: 'start build',
spinner: {
interval: 80,
frames: ['-', '+', '-']
},
});
// 开始一个
spinnerDiscardingStdin.start();
// 一秒后显示该spinner 成功 会显示一条信息并且该信息有前置的成功图标
setTimeout(() => {
spinnerDiscardingStdin.succeed();// 当前spinner成功并结束掉
}, 1000);
// 开启第二个spinner
setTimeout(() => {
spinnerDiscardingStdin.start();//开启一个新的spinner
}, 2000);
// 第二个spinner成功、开启第三个spinner
setTimeout(() => {
spinnerDiscardingStdin.succeed(); // 结束掉第二个
spinner.start();
}, 3000);
setTimeout(() => {
spinner.color = 'yellow'; // 修改颜色
spinner.text = `Loading ${chalk.red('rainbows')}`; // 修改文本
}, 4000);
// 改变样式
setTimeout(() => {
spinner.color = 'green';
spinner.indent = 2;
spinner.text = 'Loading with indent';
}, 5000);
// 改变样式
setTimeout(() => {
spinner.indent = 0;
spinner.spinner = 'moon';
spinner.text = 'Loading with different spinners';
}, 6000);
setTimeout(() => {
spinner.prefixText = chalk.dim('[info]');
spinner.spinner = 'dots';
spinner.text = 'Loading with prefix text';
}, 8000);
setTimeout(() => {
spinner.prefixText = '';
spinner.suffixText = chalk.dim('[info]');
spinner.text = 'Loading with suffix text';
}, 10_000);
setTimeout(() => {
spinner.prefixText = chalk.dim('[info]');
spinner.suffixText = chalk.dim('[info]');
spinner.text = 'Loading with prefix and suffix text';
}, 12_000);
setTimeout(() => {
spinner.stopAndPersist({
prefixText: '',
suffixText: '',
symbol: logSymbols.info,
text: 'Stopping with different text!',
});
}, 14_000);