-
Notifications
You must be signed in to change notification settings - Fork 29
/
Copy pathplopfile.js
83 lines (79 loc) · 2.15 KB
/
plopfile.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
const templateFilesJS = 'plop-templates/js/**';
const templateFilesTS = 'plop-templates/ts/**';
const jsTemplateActions = [
{
type: 'addMany',
destination: 'packages/{{camelCase name}}',
base: 'plop-templates/js',
templateFiles: templateFilesJS,
},
{
type: 'modify',
path: 'packages/{{camelCase name}}/package.json',
pattern: /##__PROJECT_NAME_LOWER_CASE__##/gi,
template: '{{dashCase name}}',
},
{
type: 'modify',
path: 'packages/{{camelCase name}}/app/index.html',
pattern: /##__PROJECT_NAME__##/gi,
template: '{{dashCase name}}',
},
{
type: 'modify',
path: 'packages/{{camelCase name}}/app/index.js',
pattern: /##__PROJECT_NAME__##/gi,
template: '{{dashCase name}}',
},
{
type: 'modify',
path: 'packages/{{camelCase name}}/index.html',
pattern: /##__PROJECT_NAME__##/gi,
template: '{{dashCase name}}',
},
];
const tsTemplateActions = [
{
type: 'addMany',
destination: 'packages/{{camelCase name}}',
base: 'plop-templates/ts',
templateFiles: templateFilesTS,
},
{
type: 'modify',
path: 'packages/{{camelCase name}}/package.json',
pattern: /##__PROJECT_NAME_LOWER_CASE__##/gi,
template: '{{dashCase name}}',
},
];
module.exports = plop => {
// Declare a new generator called "newApp" for use with our react-redux-boilerplate app
plop.setGenerator('nitro2', {
description: 'Scaffold a new React microApp',
// Get inputs from the user.
// That's Inquirer.js doing the job behind the hood.
prompts: [
{
type: 'input',
name: 'name',
message: 'Name from your Micro App?',
validate: value => {
if (/.+/.test(value)) {
if (/^[a-zA-Z]+$/.test(value)) {
return true;
}
return 'Name must not have any special characters in it.';
}
return 'Name is required!';
},
},
{
type: 'confirm',
name: 'isJSTemplate',
message: 'Would you like to create typescript template?',
},
],
actions: answers =>
answers.isJSTemplate ? tsTemplateActions : jsTemplateActions,
});
};