抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

This is a picture without description

multispinner 是在命令行执行时等待的样式,并且能根据结果返回不同的提示信息.

This is a picture without description

这个node插件使用起来非常简单 在multispinner Github 里有例子 不太懂可以看一下.

**普通方法使用**
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
'use strict'

// setup
const Multispinner = require('Multispinner')
const spinners = ['foo', 'bar', 'baz', 'qux'] //这是设定同时进行几个任务执行

// instantiate and start spinners
const m = new Multispinner(spinners)

// finish spinners in staggered timeouts
setTimeout(() => m.success('foo'), 1000) //这里是任务根据结果返回 信息
setTimeout(() => m.error('bar'), 1500)
setTimeout(() => m.success('baz'), 2000)
setTimeout(() => m.error('qux'), 2500)

// do something on success/error events
// 这里是定义返回信息输出什么内容
m.on('success', () => {
// does not fire in this example because m.error is called
console.log('done without errors!')
}).on('err', (e) => {
console.log(`${e} spinner finished with an error`)
})

自定义样式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
'use strict'

// modules
const Multispinner = require('Multispinner')
const figures = require('figures') //这一个符号小插件

// constants
const spinners = ['task A', 'task B', 'task C']
const opts = {
'interval': 120,
'preText': 'Completing', // (*) Completing task A
'postText': 'process', //这是后缀
'frames': [
'[ ]',
'[> ]',
'[)> ]',
'[ ̄)> ]',
'[3 ̄)> ]',
'[ ̄3 ̄)> ]',
'[( ̄3 ̄)> ]',
'[<( ̄3 ̄)> ]',
'[<(≧ □ ≦)>]',
'[ <(≧ □ ≦)]',
'[ <(≧ □ ≦]',
'[ <(≧ □ ]',
'[ <(≧ □]',
'[ <(≧ ]',
'[ <(≧]',
'[ <(]',
'[ <]',
'[ ]',
],
'symbol': {
'success': ' '.repeat(7) + figures.tick
}
}

const opts1 = {
'interval': 150, //数值越大 速度越慢
'preText': 'Completing', //这个是输出信息前,加的前缀内容
'frames': [
'[ ]',
'[> ]',
'[)> ]',
'[ ̄)> ]',
'[3 ̄)> ]',
'[ ̄3 ̄)> ]',
'[( ̄3 ̄)> ]',
'[<( ̄3 ̄)>]',
'[ <( ̄3 ̄)]',
'[ <( ̄3 ̄]',
'[ <( ̄3 ]',
'[ <( ̄3]',
'[ <( ̄]',
'[ <( ]',
'[ <(]',
'[ <]',
'[ ]',
'[ ]',
],
'symbol': {//repeat()是重复字符串几次 前面是空格 也就是重复空格几次
'success': ' '.repeat(7) + figures.circleFilled
}
}

// initialize
const m = new Multispinner(spinners, opts1)

// staggered completion
const t = 2500
let i = 0
function loop() {
setTimeout(() => {
m.success(spinners[i])
i++
if (i < spinners.length) loop()
}, t)
}
loop()

实际应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

//实际应用中要配合 Promise 使用

const tasks = ['renderer','app']
const m = new Multispinner(tasks, {
preText: 'building',
postText: 'process'
})

m.on('success', () => {
process.stdout.write('\x1B[2J\x1B[0f')
//console.log(`\n\n ${results} `)
console.log(` ${okayLog}take it away ${chalk.yellow('`web-builder`')}\n`)
process.exit()
})

app().then(() => {
m.success('app')
console.log(` ${okayLog}take it away ${chalk.yellow('`app-builder`')}\n`)
process.exit()
}).catch((err) => {
m.error('app')
console.log(`\n ${errorLog}failed to build app process`)
console.error(`\n${err}\n`)
process.exit(1)
})

function app() {
return new Promise((resolve, reject) => {
exec('electron-packager . HelloWorld windows --out ./OutApp --version 1.6.11 --overwrite --ignore=client/node_modules', (error, stdout, stderr) => {
if (error) {
reject(stderr)
} else {
resolve(stdout)
}
})

})
}

评论