forked from umijs/umi
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbootstrap-examples.js
More file actions
96 lines (87 loc) · 2.7 KB
/
bootstrap-examples.js
File metadata and controls
96 lines (87 loc) · 2.7 KB
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
const { existsSync, writeFileSync, readdirSync } = require('fs');
const { join } = require('path');
const mkdirp = require('mkdirp');
const { yParser } = require('@umijs/utils');
const getPackages = require('./utils/getPackages');
(async () => {
const args = yParser(process.argv);
const pkgs = getPackages('../../examples');
pkgs.forEach(async (shortName) => {
const pkgJSONPath = join(
__dirname,
'..',
'examples',
shortName,
'package.json',
);
const pkgJSONExists = existsSync(pkgJSONPath);
if (args.force || !pkgJSONExists) {
const json = {
name: shortName,
version: '0.0.1',
description: shortName,
scripts: {
start: "umi dev",
build: "umi build"
},
repository: {
type: 'git',
url: 'https://github.com/umijs/umi',
},
keywords: ['umi', 'umi examples'],
authors: ['chencheng <sorrycc@gmail.com> (https://github.com/sorrycc)'],
license: 'MIT',
bugs: 'http://github.com/umijs/umi/issues',
homepage: `https://github.com/umijs/umi/tree/master/examples/${shortName}#readme`,
};
if (pkgJSONExists) {
const pkg = require(pkgJSONPath);
[
'dependencies',
'devDependencies',
'peerDependencies',
'bin',
'files',
'authors',
'types',
'sideEffects',
'main',
'module',
].forEach((key) => {
if (pkg[key]) json[key] = pkg[key];
});
}
writeFileSync(pkgJSONPath, `${JSON.stringify(json, null, 2)}\n`);
}
const readmePath = join(
__dirname,
'..',
'examples',
shortName,
'README.md',
);
if (args.force || !existsSync(readmePath)) {
writeFileSync(readmePath, `# ${shortName}\n\nTODO\n\n## How to use\n\nExecute [\`@umijs/create-umi-app\`](https://github.com/umijs/umi/tree/master/packages/create-umi-app) with [npm](https://docs.npmjs.com/cli/init) or [Yarn](https://yarnpkg.com/lang/en/docs/cli/create/) to bootstrap the example:\n\n\`\`\`bash\nnpx @umijs/create-umi-app --example ${shortName} ${shortName}-app\n# or\nyarn create @umijs/umi-app --example ${shortName} ${shortName}-app\n\`\`\`\n`);
} else {
return;
}
const indexPath = join(
__dirname,
'..',
'examples',
shortName,
'pages',
'index.tsx',
);
if (args.force || !existsSync(indexPath)) {
await mkdirp(join(indexPath, '..'));
writeFileSync(indexPath, `import React from 'react';
import type { FC } from 'react';
const IndexPage: FC = () => {
return (<div>Index Page</div>);
}
export default IndexPage;
`);
}
});
})();