-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplopfile.js
81 lines (77 loc) · 2.14 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
const { readdirSync, existsSync } = require("fs")
const path = require("path")
const jsPackageNames = getPackageNames("js")
module.exports = function (plop) {
plop.setGenerator("package", {
description: "create a new package from scratch",
prompts: [
{
type: "input",
name: "name",
message: "What should this package's name be? Ex. eslint-plugin",
},
{
type: "input",
name: "description",
message: "What should this package's description be?",
},
{
type: "confirm",
name: "usedInBrowser",
message: "Is this package intended for use in the browser?",
},
],
actions: [
{
type: "add",
path: "packages/{{kebabCase name}}/package.json",
templateFile: "templates/package.hbs.json",
},
{
type: "add",
path: "packages/{{kebabCase name}}/README.md",
templateFile: "templates/README.hbs.md",
},
{
type: "add",
path: "packages/{{kebabCase name}}/CHANGELOG.md",
templateFile: "templates/CHANGELOG.hbs.md",
},
{
type: "add",
path: "packages/{{kebabCase name}}/src/index.js",
templateFile: "templates/index.hbs",
},
{
type: "add",
path: "packages/{{kebabCase name}}/src/{{properCase name}}.js",
templateFile: "templates/my-package.hbs.js",
},
{
type: "add",
path: "packages/{{kebabCase name}}/src/test/{{properCase name}}.test.js",
templateFile: "templates/test.hbs.js",
},
],
})
plop.setGenerator("docs", {
description: "Generate root repo documentation",
prompts: [],
actions: [
{
type: "add",
path: "README.md",
templateFile: "templates/ROOT_README.hbs.md",
force: true,
data: { jsPackageNames },
},
],
})
}
function getPackageNames() {
const packagesPath = path.join(__dirname, "packages")
return readdirSync(packagesPath).filter(packageName => {
const packageJSONPath = path.join(packagesPath, packageName, "package.json")
return existsSync(packageJSONPath)
})
}