-
Notifications
You must be signed in to change notification settings - Fork 2
/
sao.js
98 lines (93 loc) · 1.84 KB
/
sao.js
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
const superb = require('superb')
const _ = require('lodash')
const monoModules = [
{
key: 'doc',
name: 'API Documentation',
module: 'mono-doc',
checked: true
},
{
key: 'mongodb',
module: 'mono-mongodb',
name: 'MongoDB',
checked: true
},
{
key: 'elasticsearch',
module: 'mono-elasticsearch',
name: 'Elastic Search'
},
{
key: 'redis',
module: 'mono-redis',
name: 'Redis'
},
{
key: 'mail',
module: 'mono-mail',
name: 'Mails'
},
{
key: 'io',
module: 'mono-io',
name: 'Socket.io (mono-io)'
},
{
key: 'push',
module: 'mono-push',
name: 'Push events (requires MongoDB & Socket.io modules)'
},
{
key: 'notifications',
module: 'mono-notifications',
name: 'Notifications'
}
]
module.exports = {
prompts: {
name: {
message: 'What is the name of your new Mono app?',
default: ':folderName:'
},
description: {
message: 'How would you descripe your Mono app?',
default: `${_.capitalize(superb())} app with Mono`
},
eslint: {
message: 'Do you want to use ESLINT?',
type: 'list',
choices: ['yes', 'no'],
default: 'yes'
},
modules: {
message: 'What Mono modules do you want to use?',
type: 'checkbox',
choices: monoModules
}
},
data(answers) {
const modules = {}
answers.modulesConf = []
answers.modules = answers.modules || []
answers.modules.forEach((name) => {
const monoModule = monoModules.find((m) => m.name === name)
if (!monoModule) return
modules[monoModule.key] = true
answers.modulesConf.push(monoModule.module)
})
answers.modules = modules
return answers
},
filters: {
'src/todos/**': 'modules.mongodb === true',
'.eslintrc.json': 'eslint === "yes"'
},
move: {
'gitignore': '.gitignore',
'pkg.json': 'package.json'
},
showTip: true,
gitInit: true,
npmInstall: true
}