listr2 系列 - 1.入门教程

发布时间 2023-10-12 00:31:07作者: sq800

listr2 是一个易于使用的 Node.js 包,可以用来创建生动的、可以交互的 CLI 界面、任务列表。类似的库还有consola

贴一个官方的示例图,来便于理解:
listr2官方示例图

我们可以利用这个库实现自己的 CLI 、管理任务、优化控制台显示等。

快速上手

安装

pnpm add listr2

简单使用

import { Listr } from "listr2";

const tasks = new Listr([
  {
    title: "任务1  立即执行完成",
    task: () => {
      console.log("执行任务1");
    },
  },
  {
    title: "任务2  等待3s后才执行完成",
    task: () =>
      new Promise<void>(resolve => {
        setTimeout(() => {
          console.log("执行任务2");
          resolve();
        }, 3000);
      }),
  },
  {
    title: "任务3  等待3s后才执行失败",
    task: () =>
      new Promise<void>((resolve, reject) => {
        setTimeout(() => {
          console.log("执行任务3");
          reject();
        }, 3000);
      }),
  },
]);

tasks
  .run()
  .then()
  .catch(err => {});

运行效果

运行效果

以这个例子, 一个任务最关键的两个元素是titletasktitle是一个任务的标题,每个任务标题单独占据一行,task是一个函数,包含要执行的代码。

task为一个普通函数时,则执行完,任务直接被标记为成功状态。

task允许Promise类型的返回值。在返回的Promise实例在pending状态下,换句话说,在调用resolve或reject之前,任务一直为执行状态。调用resolve,任务的执行结果为成功,调用reject,则任务的执行结果为失败。

更高级的用法,我将在下一篇进行介绍。