forked from lgwebdream/fe-code
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.js
More file actions
102 lines (98 loc) · 2.7 KB
/
utils.js
File metadata and controls
102 lines (98 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
97
98
99
100
101
102
const {
dependencies: dependenciesConfig,
devDependencies: devDependenciesConfig,
} = require('../dependencies.config');
const reactSrcTemplate = require('./template/react17');
const vue2SrcTemplate = require('./template/vue2');
const vue3SrcTemplate = require('./template/vue3');
const emptySrcTemplate = require('./template/empty');
const getStyles = require('./template/style');
const getBasicDependenciesConfig = ({
projectName,
ui,
main,
isTypescript,
isLint,
isPrettier,
}) => {
const dependencies = {};
const devDependencies = {};
if (main === 'react') {
dependencies.react = dependenciesConfig.react;
dependencies['react-dom'] = dependenciesConfig['react-dom'];
if (isTypescript) {
devDependencies.typescript = devDependenciesConfig.typescript;
devDependencies['@types/react-dom'] =
devDependenciesConfig['@types/react-dom'];
devDependencies['@types/react'] = devDependenciesConfig['@types/react'];
}
} else if (main === 'vue') {
dependencies.vue = dependenciesConfig.vue;
}
if (ui === 'antd') {
dependencies.antd = dependenciesConfig.antd;
} else if (ui === 'element') {
dependencies['element-ui'] = dependenciesConfig['element-ui'];
}
if (isLint) {
devDependencies.eslint = devDependenciesConfig.eslint;
if (main === 'react') {
devDependencies['eslint-plugin-react'] =
devDependenciesConfig['eslint-plugin-react'];
}
if (isPrettier) {
devDependencies['eslint-config-prettier'] =
devDependenciesConfig['eslint-config-prettier'];
devDependencies['eslint-plugin-prettier'] =
devDependenciesConfig['eslint-plugin-prettier'];
}
}
if (isPrettier) {
devDependencies.prettier = devDependenciesConfig.prettier;
}
return {
dependencies,
devDependencies,
name: projectName,
};
};
module.exports.mergeBasicDependencies = (config, props) => {
const basicConfig = getBasicDependenciesConfig(props);
for (const item in basicConfig) {
if (basicConfig.hasOwnProperty(item)) {
const value = basicConfig[item];
if (typeof value === 'object' && value) {
config[item] = { ...config[item], ...basicConfig[item] };
} else {
config[item] = value;
}
}
}
return config;
};
module.exports.getSrcTemplate = ({
ui,
main,
projectName,
buildTool,
isTypescript,
isSass,
isLess,
}) => {
const srcFilesMap = {
vue2: vue2SrcTemplate,
vue3: vue3SrcTemplate,
react: reactSrcTemplate,
};
const scripts = (srcFilesMap[main] || emptySrcTemplate)({
ui,
main,
projectName,
buildTool,
isTypescript,
isSass,
isLess,
});
const styles = getStyles({ isLess, isSass });
return [...scripts, ...styles];
};