-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenerateExampleList.js
More file actions
41 lines (33 loc) · 1017 Bytes
/
generateExampleList.js
File metadata and controls
41 lines (33 loc) · 1017 Bytes
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
const packageJson = require('./package.json');
const fs = require('fs');
const path = require('path');
const exampleListFile = fs.readFileSync('./exampleList.js', 'utf-8');
const getExampleFilePath = name => {
return path.join(__dirname, 'node_modules', name, 'example/App.js');
};
const exampleExists = Object.entries(packageJson.dependencies).filter(
([key, value]) => {
return fs.existsSync(getExampleFilePath(key));
},
);
const exampleConfigs = exampleExists.map(([name]) => {
const libPackageJson = JSON.parse(
fs.readFileSync(
path.join(__dirname, 'node_modules', name, 'package.json'),
'utf-8',
),
);
return `{
name: '${name}',
version: '${libPackageJson.version}',
screen: require('${getExampleFilePath(name)}')
}`;
});
const template = `//GENERATED
${exampleConfigs.join(',')},
//END_GENERATED`;
const result = exampleListFile.replace(
/\/\/GENERATED.*END_GENERATED/gms,
template,
);
fs.writeFileSync('./exampleList.js', result);