1 | "use strict";
|
2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3 | return new (P || (P = Promise))(function (resolve, reject) {
|
4 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6 | function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
7 | step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8 | });
|
9 | };
|
10 | Object.defineProperty(exports, "__esModule", { value: true });
|
11 | const fs_i_1 = require("fs-i");
|
12 | const fs_extra_1 = require("fs-extra");
|
13 | function replaceProjectName(path, answer) {
|
14 | return __awaiter(this, void 0, void 0, function* () {
|
15 | let files = yield fs_i_1.getAllFiles(path);
|
16 | for (let file of files) {
|
17 | let fileContent = fs_extra_1.readFileSync(file, { encoding: "utf-8" });
|
18 | fileContent = fileContent.replace(/{{projectName}}/g, answer.projectName);
|
19 | fileContent = yield editPackageJson(file, fileContent, answer);
|
20 | fs_extra_1.writeFileSync(file, fileContent);
|
21 | }
|
22 | if (answer.unittest === "否") {
|
23 | let dir = path + "/test";
|
24 | fs_extra_1.emptyDirSync(dir);
|
25 | fs_extra_1.rmdirSync(dir);
|
26 | }
|
27 | });
|
28 | }
|
29 | function editPackageJson(file, fileContent, answer) {
|
30 | return __awaiter(this, void 0, void 0, function* () {
|
31 | file = file.replace(/\\/g, "/");
|
32 | file = file.substr(file.lastIndexOf("/") + 1);
|
33 | if (file === "package.json") {
|
34 | if (answer.needDocs === "否") {
|
35 | let json = JSON.parse(fileContent);
|
36 | delete json.devDependencies.typedoc;
|
37 | delete json.scripts.docs;
|
38 | json.scripts.build = json.scripts.build.replace(/\s*&&\s*npm\s*run\s*docs\s*/, "");
|
39 | fileContent = JSON.stringify(json, null, 2);
|
40 | }
|
41 | if (answer.unittest === "否") {
|
42 | let json = JSON.parse(fileContent);
|
43 | delete json.devDependencies["@types/chai"];
|
44 | delete json.devDependencies["@types/mocha"];
|
45 | delete json.devDependencies["source-map-support"];
|
46 | delete json.devDependencies["ts-node"];
|
47 | delete json.devDependencies["typedoc-format"];
|
48 | delete json.devDependencies.chai;
|
49 | delete json.devDependencies.coveralls;
|
50 | delete json.devDependencies.mocha;
|
51 | delete json.devDependencies.nyc;
|
52 | delete json.scripts.test;
|
53 | delete json.scripts["test-nyc"];
|
54 | delete json.nyc;
|
55 | fileContent = JSON.stringify(json, null, 2);
|
56 | }
|
57 | }
|
58 | if (file == ".travis.yml") {
|
59 | if (answer.unittest === "否") {
|
60 | fileContent = fileContent
|
61 | .replace(/(script\s*:)((.|\n)*?)(\s*-\s*npm\s*run\s*test)/, (w, a, b, c, d) => {
|
62 | return w.replace(d, "");
|
63 | })
|
64 | .replace(/(after_script\s*:)((.|\n)*?)(\s*-\s*npm\s*run\s*test-nyc)/, (w, a, b, c, d) => {
|
65 | return w.replace(a, "").replace(d, "");
|
66 | })
|
67 | .replace(/(-\s*provider:\s*pages\s*)([^-]*)/, "");
|
68 | }
|
69 | }
|
70 | return fileContent;
|
71 | });
|
72 | }
|
73 | function createProject(answer) {
|
74 | return __awaiter(this, void 0, void 0, function* () {
|
75 | let targetPath = `${process.cwd()}/${answer.projectName}`;
|
76 | fs_extra_1.copySync(`${__dirname}/../template`, targetPath);
|
77 | yield replaceProjectName(targetPath, answer);
|
78 | });
|
79 | }
|
80 | exports.createProject = createProject;
|
81 |
|
\ | No newline at end of file |