UNPKG

5.11 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var tslib_1 = require("tslib");
4/* eslint-disable import/prefer-default-export */
5/* eslint-disable no-console */
6var chalk_1 = tslib_1.__importDefault(require("chalk"));
7var ora_1 = tslib_1.__importDefault(require("ora"));
8var enquirer_1 = require("enquirer");
9var ts_lib_scripts_utils_1 = require("ts-lib-scripts-utils");
10var validatePackageName_1 = require("./validatePackageName");
11var getOptions_1 = require("./getOptions");
12var genProject_1 = require("./genProject");
13var paths_1 = require("../config/paths");
14var isCmdInstalled_1 = tslib_1.__importDefault(require("./isCmdInstalled"));
15var createGitRepository_1 = tslib_1.__importDefault(require("./createGitRepository"));
16var gitCommit_1 = tslib_1.__importDefault(require("./gitCommit"));
17var installDeps_1 = tslib_1.__importDefault(require("./installDeps"));
18var genMonorepoProject_1 = tslib_1.__importDefault(require("./genMonorepoProject"));
19var execa = require("execa");
20/**
21 * 创建项目
22 *
23 * @param projectName 项目名称
24 * @param program 命令行对象
25 */
26function create(projectNameConfig, program) {
27 return tslib_1.__awaiter(this, void 0, void 0, function () {
28 var projectName, packageName, options, spinner, error_1, projectPath, gitCreated, openWithCode;
29 return tslib_1.__generator(this, function (_a) {
30 switch (_a.label) {
31 case 0:
32 projectName = projectNameConfig.startsWith('@')
33 ? projectNameConfig.substr(projectNameConfig.indexOf('/') + 1)
34 : projectNameConfig;
35 packageName = (program.packageName || projectNameConfig);
36 if (!validatePackageName_1.validatePackageName(packageName)) {
37 process.exit(1);
38 }
39 return [4 /*yield*/, getOptions_1.getOptions(projectName, packageName, program)];
40 case 1:
41 options = _a.sent();
42 if (packageName.startsWith('@') && !options.npmScope && options.monorepo) {
43 console.error("monorepo\u6A21\u5F0F\u65F6\uFF0C\u9879\u76EE\uFF0C\u9879\u76EE\u540D\u79F0\u4E0D\u80FD\u4EE5@\u5F00\u5934\u3002\u73B0\u5728\u662F\uFF1A" + packageName);
44 return [2 /*return*/];
45 }
46 spinner = ora_1.default().start();
47 spinner.start('正在生成项目...');
48 _a.label = 2;
49 case 2:
50 _a.trys.push([2, 7, , 8]);
51 if (!options.monorepo) return [3 /*break*/, 4];
52 return [4 /*yield*/, genMonorepoProject_1.default(options)];
53 case 3:
54 _a.sent();
55 return [3 /*break*/, 6];
56 case 4: return [4 /*yield*/, genProject_1.genProject(options)];
57 case 5:
58 _a.sent();
59 _a.label = 6;
60 case 6:
61 spinner.succeed("\u5DF2\u751F\u6210\u9879\u76EE " + chalk_1.default.green(packageName));
62 return [3 /*break*/, 8];
63 case 7:
64 error_1 = _a.sent();
65 spinner.fail('生成项目失败');
66 ts_lib_scripts_utils_1.logError(error_1);
67 process.exit(1);
68 return [3 /*break*/, 8];
69 case 8:
70 projectPath = paths_1.resolveRoot(options.projectName);
71 gitCreated = createGitRepository_1.default(projectPath);
72 return [4 /*yield*/, installDeps_1.default(spinner, options)];
73 case 9:
74 _a.sent();
75 if (gitCreated) {
76 try {
77 gitCommit_1.default(projectPath);
78 }
79 catch (error) {
80 // 忽略git提交失败
81 }
82 }
83 if (!isCmdInstalled_1.default('code')) return [3 /*break*/, 12];
84 console.log();
85 return [4 /*yield*/, enquirer_1.prompt({
86 type: 'confirm',
87 name: 'openWithCode',
88 message: '使用vscode打开项目?',
89 initial: 'Y',
90 })];
91 case 10:
92 openWithCode = (_a.sent()).openWithCode;
93 if (!openWithCode) return [3 /*break*/, 12];
94 return [4 /*yield*/, execa('code', [projectName])];
95 case 11:
96 _a.sent();
97 _a.label = 12;
98 case 12:
99 process.exit(0);
100 return [2 /*return*/];
101 }
102 });
103 });
104}
105exports.default = create;
106//# sourceMappingURL=index.js.map
\No newline at end of file