1 | "use strict";
|
2 | var __assign = (this && this.__assign) || function () {
|
3 | __assign = Object.assign || function(t) {
|
4 | for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5 | s = arguments[i];
|
6 | for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7 | t[p] = s[p];
|
8 | }
|
9 | return t;
|
10 | };
|
11 | return __assign.apply(this, arguments);
|
12 | };
|
13 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
14 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
15 | return new (P || (P = Promise))(function (resolve, reject) {
|
16 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
17 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
18 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
19 | step((generator = generator.apply(thisArg, _arguments || [])).next());
|
20 | });
|
21 | };
|
22 | var __generator = (this && this.__generator) || function (thisArg, body) {
|
23 | var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
24 | return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
25 | function verb(n) { return function (v) { return step([n, v]); }; }
|
26 | function step(op) {
|
27 | if (f) throw new TypeError("Generator is already executing.");
|
28 | while (_) try {
|
29 | if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
30 | if (y = 0, t) op = [op[0] & 2, t.value];
|
31 | switch (op[0]) {
|
32 | case 0: case 1: t = op; break;
|
33 | case 4: _.label++; return { value: op[1], done: false };
|
34 | case 5: _.label++; y = op[1]; op = [0]; continue;
|
35 | case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
36 | default:
|
37 | if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
38 | if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
39 | if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
40 | if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
41 | if (t[2]) _.ops.pop();
|
42 | _.trys.pop(); continue;
|
43 | }
|
44 | op = body.call(thisArg, _);
|
45 | } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
46 | if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
47 | }
|
48 | };
|
49 | var __spreadArrays = (this && this.__spreadArrays) || function () {
|
50 | for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
51 | for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
52 | for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
53 | r[k] = a[j];
|
54 | return r;
|
55 | };
|
56 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
57 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
58 | };
|
59 | Object.defineProperty(exports, "__esModule", { value: true });
|
60 | exports.$init = void 0;
|
61 | var path_1 = __importDefault(require("path"));
|
62 | var utils_1 = require("@omni-door/utils");
|
63 | var templates_1 = require("./templates");
|
64 | var dependencies_1 = require("./configs/dependencies");
|
65 | var dependencies_stable_map_1 = require("./configs/dependencies_stable_map");
|
66 | function $init(_a) {
|
67 | var _b = _a.strategy, strategy = _b === void 0 ? 'stable' : _b, project_name = _a.projectName, initPath = _a.initPath, _c = _a.configFileName, configFileName = _c === void 0 ? 'omni.config.js' : _c, _d = _a.git, git = _d === void 0 ? '' : _d, _e = _a.npm, npm = _e === void 0 ? '' : _e, devServer = _a.devServer, ts = _a.ts, test = _a.test, eslint = _a.eslint, prettier = _a.prettier, commitlint = _a.commitlint, style = _a.style, stylelint = _a.stylelint, install = _a.install, tpls = _a.tpls, _f = _a.pkgtool, pkgtool = _f === void 0 ? 'pnpm' : _f, isSlient = _a.isSlient, tag = _a.tag, dependencies_custom = _a.dependencies, devDependencies_custom = _a.devDependencies, _g = _a.error, error = _g === void 0 ? function () { return process.exit(1); } : _g, _h = _a.success, success = _h === void 0 ? function () { } : _h;
|
68 | return __awaiter(this, void 0, void 0, function () {
|
69 | var installCliPrefix, installDevCliPrefix, installReadMe, runScript, paramScript, custom_tpl_list, _loop_1, tpl_name, tpl, project_type, params, pathToFileContentMap, file_path, p, err, _j, depArr, depStr, dependencies_str, result, _k, add, _l, remove, _loop_2, i, installCli, _m, defaultDepArr, defaultDepStr, tsDepArr, tsDepStr, testDepStr, testDepArr, eslintDepArr, eslintDepStr, prettierDepArr, prettierDepStr, commitlintDepArr, commitlintDepStr, stylelintDepArr, stylelintDepStr, devServerDepArr, devServerDepStr, buildDepArr, buildDepStr, devDepArr, customDepStr, result, _o, add, _p, remove, _loop_3, i, installDevCli, installTsDevCli, installTestDevCli, installEslintDevCli, installPrettierDevCli, installCommitlintDevCli, installStylelintDevCli, installServerDevCli, installBuildDevCli, installCustomDevCli, processDepStr;
|
70 | var _q;
|
71 | return __generator(this, function (_r) {
|
72 | switch (_r.label) {
|
73 | case 0:
|
74 | if (pkgtool === 'pnpm') {
|
75 | utils_1.logInfo('back to yarn because the typescript cannot compatible with the soft connection of pnpm');
|
76 | utils_1.logInfo('回退至 yarn,因为 typescript 暂时无法兼容 pnpm 的软连机制');
|
77 | utils_1.logInfo('https://github.com/microsoft/TypeScript/issues/29221');
|
78 | pkgtool = 'yarn';
|
79 | }
|
80 | switch (pkgtool) {
|
81 | case 'pnpm':
|
82 | installCliPrefix = pkgtool + " add -P --save-exact --prefix " + initPath;
|
83 | installDevCliPrefix = pkgtool + " add -D --save-exact --prefix " + initPath;
|
84 | installReadMe = pkgtool + " install";
|
85 | runScript = "" + pkgtool;
|
86 | paramScript = '-- -';
|
87 | break;
|
88 | case 'yarn':
|
89 | installCliPrefix = pkgtool + " add --cwd " + initPath;
|
90 | installDevCliPrefix = pkgtool + " add -D --cwd " + initPath;
|
91 | installReadMe = "" + pkgtool;
|
92 | runScript = "" + pkgtool;
|
93 | paramScript = '-';
|
94 | break;
|
95 | case 'npm':
|
96 | default:
|
97 | installCliPrefix = pkgtool + " install --save --save-exact --prefix " + initPath;
|
98 | installDevCliPrefix = pkgtool + " install --save-dev --save-exact --prefix " + initPath;
|
99 | installReadMe = pkgtool + " install";
|
100 | runScript = pkgtool + " run";
|
101 | paramScript = '-- -';
|
102 | }
|
103 |
|
104 | utils_1.logTime('PARSE(模板解析)');
|
105 | custom_tpl_list = {};
|
106 | try {
|
107 | custom_tpl_list = typeof tpls === 'function'
|
108 | ? tpls(templates_1.tpls_origin_init)
|
109 | : custom_tpl_list;
|
110 | _loop_1 = function (tpl_name) {
|
111 | var name_1 = tpl_name;
|
112 | var list = custom_tpl_list;
|
113 | var tplFactory = function (customTpl, originTpl) {
|
114 | return function (config) {
|
115 | try {
|
116 | var result = customTpl && customTpl(config);
|
117 | if (typeof result === 'function') {
|
118 |
|
119 |
|
120 | var originResult = originTpl(config);
|
121 | if (typeof originResult === 'function') {
|
122 | return tplFactory(result, originResult);
|
123 | }
|
124 | }
|
125 | return result;
|
126 | }
|
127 | catch (err) {
|
128 | utils_1.logWarn(err);
|
129 | utils_1.logWarn("The custom template \"" + name_1 + "\" parsing occured error, the default template will be used for initialization");
|
130 | utils_1.logWarn("\u81EA\u5B9A\u4E49\u6A21\u677F \"" + name_1 + "\" \u89E3\u6790\u51FA\u9519\uFF0C\u5C06\u4F7F\u7528\u9ED8\u8BA4\u6A21\u677F\u8FDB\u884C\u521D\u59CB\u5316");
|
131 | return originTpl(config);
|
132 | }
|
133 | };
|
134 | };
|
135 | list[name_1] = tplFactory(list[name_1], templates_1.tpls_init[name_1]);
|
136 | };
|
137 | for (tpl_name in custom_tpl_list) {
|
138 | _loop_1(tpl_name);
|
139 | }
|
140 | }
|
141 | catch (err_tpls) {
|
142 | utils_1.logWarn(err_tpls);
|
143 | utils_1.logWarn('The custom template generating occured error, all will be initializated with the default template');
|
144 | utils_1.logWarn('生成自定义模板出错,将全部使用默认模板进行初始化');
|
145 | }
|
146 | tpl = __assign(__assign({}, templates_1.tpls_init), custom_tpl_list);
|
147 | project_type = 'component-react';
|
148 | utils_1.logTime('PARSE(模板解析)', true);
|
149 |
|
150 | utils_1.logTime('CREATE(创建文件)');
|
151 | params = { project_type: project_type, project_name: project_name, ts: ts, test: test, eslint: eslint, prettier: prettier, commitlint: commitlint, style: style, stylelint: !!style && stylelint, strategy: strategy, configFileName: configFileName };
|
152 | try {
|
153 | pathToFileContentMap = (_q = {},
|
154 |
|
155 | _q["" + configFileName] = tpl.omni(__assign(__assign({}, params), { git: git, npm: npm, devServer: devServer })),
|
156 | _q['package.json'] = install && tpl.pkj({
|
157 | type_react: dependencies_stable_map_1.devDependencies['@types/react'],
|
158 | project_name: project_name,
|
159 | devServer: devServer
|
160 | })(__assign(__assign({}, params), { install: install, dependencies: '', devDependencies: '' })),
|
161 | _q['.gitignore'] = tpl.gitignore(params),
|
162 | _q['.npmignore'] = tpl.npmignore(params),
|
163 | _q["src/index." + (ts ? 'ts' : 'js')] = tpl.source_index(params),
|
164 | _q["src/utils/classnames." + (ts ? 'ts' : 'js')] = tpl.source_classnames(params),
|
165 |
|
166 | _q['@types/global.d.ts'] = ts && tpl.source_d(params),
|
167 | _q['tsconfig.json'] = ts && tpl.tsconfig(params),
|
168 |
|
169 | _q['jest.config.js'] = test && tpl.jest(params),
|
170 |
|
171 | _q['.vscode/settings.json'] = tpl.vscode(params),
|
172 | _q['.editorconfig'] = (eslint || prettier) && tpl.editor(params),
|
173 | _q['.eslintrc.js'] = eslint && tpl.eslint(params),
|
174 | _q['.eslintignore'] = eslint && tpl.eslintignore(params),
|
175 | _q['prettier.config.js'] = prettier && tpl.prettier(params),
|
176 | _q['.prettierignore'] = prettier && tpl.prettierignore(params),
|
177 | _q['stylelint.config.js'] = stylelint && tpl.stylelint(params),
|
178 | _q['commitlint.config.js'] = commitlint && tpl.commitlint(params),
|
179 |
|
180 | _q['babel.config.js'] = (!ts || devServer === 'storybook' || devServer === 'styleguidist') && tpl.babel(params),
|
181 | _q['gulpfile.js'] = tpl.gulpfile(params),
|
182 |
|
183 | _q['README.md'] = tpl.readme(__assign(__assign({}, params), { install: installReadMe, runScript: runScript, paramScript: paramScript })),
|
184 | _q['README.zh-CN.md'] = tpl.readme_cn(__assign(__assign({}, params), { install: installReadMe, runScript: runScript, paramScript: paramScript })),
|
185 | _q['DEV.md'] = tpl.readme_dev(__assign(__assign({}, params), { install: installReadMe, runScript: runScript, paramScript: paramScript })),
|
186 | _q['DEV.zh-CN.md'] = tpl.readme_dev_cn(__assign(__assign({}, params), { install: installReadMe, runScript: runScript, paramScript: paramScript })),
|
187 |
|
188 | _q['src/index.mdx'] = devServer === 'docz' && tpl.mdx(params),
|
189 | _q['bisheng.config.js'] = devServer === 'bisheng' && tpl.bisheng(params),
|
190 | _q['posts/README.md'] = devServer === 'bisheng' && tpl.posts_readme()(params),
|
191 | _q['.storybook/addons.js'] = devServer === 'storybook' && tpl.storybook_addons(params),
|
192 | _q['.storybook/config.js'] = devServer === 'storybook' && tpl.storybook_config(params),
|
193 | _q['.storybook/manager-head.html'] = devServer === 'storybook' && tpl.storybook_mhead(params),
|
194 | _q['.storybook/webpack.config.js'] = devServer === 'storybook' && tpl.storybook_webpack(params),
|
195 | _q['.storybook/theme.js'] = devServer === 'storybook' && tpl.storybook_theme(params),
|
196 | _q['doczrc.js'] = devServer === 'docz' && tpl.doczrc(params),
|
197 | _q['gatsby-config.js'] = devServer === 'docz' && tpl.gatsby(params),
|
198 | _q['styleguide.config.js'] = devServer === 'styleguidist' && tpl.styleguidist(__assign(__assign({}, params), { git: git })),
|
199 | _q);
|
200 | file_path = function (p) { return path_1.default.resolve(initPath, p); };
|
201 | for (p in pathToFileContentMap) {
|
202 | utils_1.outputFile({
|
203 | file_path: file_path(p),
|
204 | file_content: pathToFileContentMap[p]
|
205 | });
|
206 | }
|
207 | }
|
208 | catch (e) {
|
209 | err = e;
|
210 | utils_1.logErr(err.name + ": " + err.message + " at \n" + err.stack);
|
211 | error ? error(err) : process.exit(1);
|
212 | }
|
213 | utils_1.logTime('CREATE(创建文件)', true);
|
214 |
|
215 | utils_1.logTime('DEPENDENCY(依赖解析)');
|
216 | return [4 , dependencies_1.dependencies(strategy)];
|
217 | case 1:
|
218 | _j = _r.sent(), depArr = _j.depArr, depStr = _j.depStr;
|
219 | dependencies_str = depStr;
|
220 | if (typeof dependencies_custom === 'function') {
|
221 | result = dependencies_custom(depArr);
|
222 | if (result instanceof Array) {
|
223 | dependencies_str = depStr + " " + utils_1.arr2str(result);
|
224 | }
|
225 | else {
|
226 | _k = result.add, add = _k === void 0 ? [] : _k, _l = result.remove, remove = _l === void 0 ? [] : _l;
|
227 | _loop_2 = function (i) {
|
228 | var item_rm = remove[i];
|
229 | depArr = __spreadArrays(utils_1.intersection(depArr, depArr.filter(function (v) { return v !== item_rm; })));
|
230 | };
|
231 | for (i = 0; i < remove.length; i++) {
|
232 | _loop_2(i);
|
233 | }
|
234 | dependencies_str = utils_1.arr2str(depArr) + " " + utils_1.arr2str(add);
|
235 | }
|
236 | }
|
237 | installCli = dependencies_str ? installCliPrefix + " " + dependencies_str : '';
|
238 | return [4 , dependencies_1.devDependencies(strategy, {
|
239 | ts: ts,
|
240 | eslint: eslint,
|
241 | prettier: prettier,
|
242 | commitlint: commitlint,
|
243 | style: style,
|
244 | stylelint: stylelint,
|
245 | test: test,
|
246 | devServer: devServer,
|
247 | tag: tag
|
248 | })];
|
249 | case 2:
|
250 | _m = _r.sent(), defaultDepArr = _m.defaultDepArr, defaultDepStr = _m.defaultDepStr, tsDepArr = _m.tsDepArr, tsDepStr = _m.tsDepStr, testDepStr = _m.testDepStr, testDepArr = _m.testDepArr, eslintDepArr = _m.eslintDepArr, eslintDepStr = _m.eslintDepStr, prettierDepArr = _m.prettierDepArr, prettierDepStr = _m.prettierDepStr, commitlintDepArr = _m.commitlintDepArr, commitlintDepStr = _m.commitlintDepStr, stylelintDepArr = _m.stylelintDepArr, stylelintDepStr = _m.stylelintDepStr, devServerDepArr = _m.devServerDepArr, devServerDepStr = _m.devServerDepStr, buildDepArr = _m.buildDepArr, buildDepStr = _m.buildDepStr, devDepArr = _m.devDepArr;
|
251 | if (typeof devDependencies_custom === 'function') {
|
252 | result = devDependencies_custom(devDepArr);
|
253 | if (result instanceof Array) {
|
254 | customDepStr = utils_1.arr2str(result);
|
255 | }
|
256 | else {
|
257 | _o = result.add, add = _o === void 0 ? [] : _o, _p = result.remove, remove = _p === void 0 ? [] : _p;
|
258 | _loop_3 = function (i) {
|
259 | var item_rm = remove[i];
|
260 | defaultDepArr = __spreadArrays(utils_1.intersection(defaultDepArr, defaultDepArr.filter(function (v) { return v !== item_rm; })));
|
261 | tsDepArr = __spreadArrays(utils_1.intersection(tsDepArr, tsDepArr.filter(function (v) { return v !== item_rm; })));
|
262 | testDepArr = __spreadArrays(utils_1.intersection(testDepArr, testDepArr.filter(function (v) { return v !== item_rm; })));
|
263 | eslintDepArr = __spreadArrays(utils_1.intersection(eslintDepArr, eslintDepArr.filter(function (v) { return v !== item_rm; })));
|
264 | prettierDepArr = __spreadArrays(utils_1.intersection(prettierDepArr, prettierDepArr.filter(function (v) { return v !== item_rm; })));
|
265 | commitlintDepArr = __spreadArrays(utils_1.intersection(commitlintDepArr, commitlintDepArr.filter(function (v) { return v !== item_rm; })));
|
266 | stylelintDepArr = __spreadArrays(utils_1.intersection(stylelintDepArr, stylelintDepArr.filter(function (v) { return v !== item_rm; })));
|
267 | devServerDepArr = __spreadArrays(utils_1.intersection(devServerDepArr, devServerDepArr.filter(function (v) { return v !== item_rm; })));
|
268 | buildDepArr = __spreadArrays(utils_1.intersection(buildDepArr, buildDepArr.filter(function (v) { return v !== item_rm; })));
|
269 | };
|
270 | for (i = 0; i < remove.length; i++) {
|
271 | _loop_3(i);
|
272 | }
|
273 | defaultDepStr = utils_1.arr2str(defaultDepArr);
|
274 | tsDepStr = utils_1.arr2str(tsDepArr);
|
275 | testDepStr = utils_1.arr2str(testDepArr);
|
276 | eslintDepStr = utils_1.arr2str(eslintDepArr);
|
277 | prettierDepStr = utils_1.arr2str(prettierDepArr);
|
278 | commitlintDepStr = utils_1.arr2str(commitlintDepArr);
|
279 | stylelintDepStr = utils_1.arr2str(stylelintDepArr);
|
280 | devServerDepStr = utils_1.arr2str(devServerDepArr);
|
281 | buildDepStr = utils_1.arr2str(buildDepArr);
|
282 | customDepStr = utils_1.arr2str(add);
|
283 | }
|
284 | }
|
285 | installDevCli = defaultDepStr ? installDevCliPrefix + " " + defaultDepStr : '';
|
286 | installTsDevCli = tsDepStr ? installDevCliPrefix + " " + tsDepStr : '';
|
287 | installTestDevCli = testDepStr ? installDevCliPrefix + " " + testDepStr : '';
|
288 | installEslintDevCli = eslintDepStr ? installDevCliPrefix + " " + eslintDepStr : '';
|
289 | installPrettierDevCli = prettierDepStr ? installDevCliPrefix + " " + prettierDepStr : '';
|
290 | installCommitlintDevCli = commitlintDepStr ? installDevCliPrefix + " " + commitlintDepStr : '';
|
291 | installStylelintDevCli = stylelintDepStr ? installDevCliPrefix + " " + stylelintDepStr : '';
|
292 | installServerDevCli = devServerDepStr ? installDevCliPrefix + " " + devServerDepStr : '';
|
293 | installBuildDevCli = buildDepStr ? installDevCliPrefix + " " + buildDepStr : '';
|
294 | installCustomDevCli = customDepStr ? installDevCliPrefix + " " + customDepStr : '';
|
295 | utils_1.logTime('DEPENDENCY(依赖解析)', true);
|
296 | if (install) {
|
297 |
|
298 | utils_1.logTime('INSTALL(安装依赖)');
|
299 | utils_1.exec([
|
300 | installCli,
|
301 | installDevCli,
|
302 | installTsDevCli,
|
303 | installTestDevCli,
|
304 | installEslintDevCli,
|
305 | installPrettierDevCli,
|
306 | installCommitlintDevCli,
|
307 | installStylelintDevCli,
|
308 | installServerDevCli,
|
309 | installBuildDevCli,
|
310 | installCustomDevCli
|
311 | ], function (res) {
|
312 | utils_1.logTime('INSTALL(安装依赖)', true);
|
313 | success(res);
|
314 | }, error, isSlient);
|
315 | }
|
316 | else {
|
317 | utils_1.logTime('STATIC(生成静态依赖文件)');
|
318 | processDepStr = function (str, prefix) {
|
319 | if (!str)
|
320 | return '';
|
321 | var result = '';
|
322 | var arr = str.split(' ').filter(function (v) { return !!v; });
|
323 | for (var i = 0; i < arr.length; i++) {
|
324 | var item = arr[i];
|
325 | if (!item)
|
326 | continue;
|
327 | var lastInd = item.lastIndexOf('@');
|
328 | var name_2 = lastInd === 0 ? item : item.substr(0, lastInd);
|
329 | var version = lastInd === 0 ? 'latest' : item.substr(lastInd + 1);
|
330 | if (i + 1 === arr.length) {
|
331 | result += " \"" + name_2 + "\": \"" + version + "\"";
|
332 | }
|
333 | else {
|
334 | result += " \"" + name_2 + "\": \"" + version + "\",\n";
|
335 | }
|
336 | }
|
337 | return "\"" + prefix + "\": {\n" + result + "\n },";
|
338 | };
|
339 | utils_1.outputFile({
|
340 | file_path: path_1.default.resolve(initPath, 'package.json'),
|
341 | file_content: tpl.pkj({
|
342 | type_react: dependencies_stable_map_1.devDependencies['@types/react'],
|
343 | project_name: project_name,
|
344 | devServer: devServer
|
345 | })(__assign(__assign({}, params), { install: install, dependencies: processDepStr(dependencies_str, 'dependencies'), devDependencies: processDepStr((defaultDepStr || '') + " " + (tsDepStr || '') + " " + (testDepStr || '') + " " + (eslintDepStr || '') + " " + (prettierDepStr || '') + " " + (commitlintDepStr || '') + " " + (stylelintDepStr || '') + " " + (devServerDepStr || '') + " " + (buildDepStr || '') + " " + (customDepStr || ''), 'devDependencies') }))
|
346 | });
|
347 | utils_1.logTime('STATIC(生成静态依赖文件)', true);
|
348 | success([]);
|
349 | }
|
350 | return [2 ];
|
351 | }
|
352 | });
|
353 | });
|
354 | }
|
355 | exports.$init = $init;
|
356 | exports.default = $init;
|