列表 
终端任务列表
安装
$ npm install --save listr
使用量
const execa = require('execa');
const Listr = require('listr');
const tasks = new Listr([
{
title: 'Git',
task: () => {
return new Listr([
{
title: 'Checking git status',
task: () => execa.stdout('git', ['status', '--porcelain']).then(result => {
if (result !== '') {
throw new Error('Unclean working tree. Commit or stash changes first.');
}
})
},
{
title: 'Checking remote history',
task: () => execa.stdout('git', ['rev-list', '--count', '--left-only', '@{u}...HEAD']).then(result => {
if (result !== '0') {
throw new Error('Remote history differ. Please pull changes.');
}
})
}
], {concurrent: true});
}
},
{
title: 'Install package dependencies',
task: () => execa('npm', ['install'])
},
{
title: 'Run tests',
task: () => execa('npm', ['test'])
},
{
title: 'Publish package',
task: () => execa('npm', ['publish'])
}
]);
tasks.run().catch(err => {
console.error(err);
});
任务
A 类 task 可以返回不同的值。 如果有的话 task 返回,这意味着任务已成功完成。 如果任务出错, 任务失败 .
const tasks = new Listr([
{
title: 'Success',
task: () => 'Foo'
},
{
title: 'Failure',
task: () => {
throw new Error('Bar')
}
}
]);
承诺
A 类 task 也可以通过返回 a 实现同步 Promise。如果承诺解决,任务成功完成,它拒绝,任务失败.
const tasks = new Listr([
{
title: 'Success',
task: () => Promise.resolve('Foo')
},
{
title: 'Failure',
task: () => Promise.reject('Bar')
}
]);
可观察
A 类 task 也可以返回一个 Observable。关于可观测值,它可以释放出多个值,并可用于显示输出
任务。 请注意,只提供了产出的最后一行.
const tasks = new Listr([
{
title: 'Success',
task: () => {
return new Observable(observer => {
observer.next('Foo');
setTimeout(() => {
observer.next('Bar');
}, 2000);
setTimeout(() => {
observer.complete();
}, 4000);
});
}
},
{
title: 'Failure',
task: () => Promise.reject(new Error('Bar'))
}
]);
流线
也有可能还给 stream。溪流将转换为 Observable 并处理成这样.
跳过任务
可选择指定 a skip 函数来确定是否可以跳过一个任务.
- 如果
skip函数返回真实值或Promise然后任务就会被跳过. - 如果返回的值是一个字符串, 它将被显示为跳过任务的原因 .
- 如果
skip函数返回假值或假值Promise以错误的值解决,那么任务将正常地执行. - 如果
skip函数丢出或返回 aPromise否认真理者,将失败.
const tasks = new Listr([
{
title: 'Task 1',
task: () => Promise.resolve('Foo')
},
{
title: 'Can be skipped',
skip: () => {
if (Math.random() > 0.5) {
return 'Reason for skipping';
}
},
task: () => 'Bar'
},
{
title: 'Task 3',
task: () => Promise.resolve('Bar')
}
]);
API 密码
列表([任务],[选项])
任务
类型 : object[]
任务列表.
标题
类型 : string
任务名称.
任务
类型 : Function
任务函数 .
跳过
类型 : Function
跳过函数 。 更多信息 跳过任务。 。 。 .
选项
显示子任务
类型 : boolean
默认 : true
设定为 false 如果您想要禁用子任务的渲染。 如果
其中之一发生了错误.
并行
类型 : boolean
默认 : false
设定为 true 如果您想要同时运行任务.
实例
添加( 任务)
返回实例 .
任务
类型 : object object[]
任务对象或多个任务对象.
运行( c)
开始执行任务 .
相关
许可证
麻省理工学院 萨姆·弗斯克伦