UNPKG

4.67 kBJavaScriptView Raw
1"use strict";
2/*!
3输出命令行提示与选择模板
4*/
5var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
6 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7 return new (P || (P = Promise))(function (resolve, reject) {
8 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
9 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
11 step((generator = generator.apply(thisArg, _arguments || [])).next());
12 });
13};
14var __importDefault = (this && this.__importDefault) || function (mod) {
15 return (mod && mod.__esModule) ? mod : { "default": mod };
16};
17var __importStar = (this && this.__importStar) || function (mod) {
18 if (mod && mod.__esModule) return mod;
19 var result = {};
20 if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
21 result["default"] = mod;
22 return result;
23};
24Object.defineProperty(exports, "__esModule", { value: true });
25const validate_npm_package_name_1 = __importDefault(require("validate-npm-package-name"));
26const chalk_1 = __importDefault(require("chalk"));
27const fs = __importStar(require("fs-extra"));
28const path = __importStar(require("path"));
29const inquirer_1 = __importDefault(require("inquirer"));
30const templates_1 = __importDefault(require("../../consts/templates"));
31const cwd = process.cwd();
32function checkAppName(appName) {
33 let appPath = path.join(cwd, appName);
34 let { validForNewPackages, warnings } = validate_npm_package_name_1.default(path.parse(appName).base);
35 if (!validForNewPackages) {
36 console.log(chalk_1.default.red('Error: 项目名称不能包含大写字母'));
37 process.exit(1);
38 }
39 return appPath;
40}
41const askTemplate = () => {
42 return inquirer_1.default.prompt({
43 type: 'list',
44 name: 'appTplName',
45 message: '请选择模板',
46 choices: templates_1.default
47 });
48};
49function copyTemplate(data) {
50 let { appTplName, appPath } = data;
51 let tplSrc = path.join(__dirname, '../..', 'templates', appTplName);
52 let appName = path.basename(appPath);
53 if (fs.existsSync(appPath)) {
54 console.log(chalk_1.default.red(`目录 ${appName} 已存在\n`));
55 process.exit(1);
56 }
57 fs.ensureDirSync(appPath);
58 fs.copySync(tplSrc, appPath);
59}
60function outputLog({ appName, appPath }) {
61 console.log(`\n项目 ${chalk_1.default.green(appName)} 创建成功, 路径: ${chalk_1.default.green(appPath)}\n`);
62 console.log(chalk_1.default.green('nanachi watch'));
63 console.log(` 实时构建项目,
64 \t或使用nanachi watch:ali 构建支付宝小程序
65 \t或使用nanachi watch:tt 构建头条小程序
66 \t或使用nanachi watch:quick 构建快应用
67 \t或使用nanachi watch:quick --huawei 构建华为快应用
68 \t或使用nanachi watch:bu 构建百度智能小程序
69 \t或使用nanachi watch:qq 构建QQ小程序
70 \t或使用nanachi watch:h5 构建h5`);
71 console.log();
72 console.log(chalk_1.default.green('nanachi build'));
73 console.log(` 构建项目(构建出错的情况下,修复后需要强制全量构建),
74 \t或使用nanachi build:ali 构建支付宝小程序
75 \t或使用nanachi build:tt 构建头条小程序
76 \t或使用nanachi build:quick 构建快应用
77 \t或使用nanachi build:quick --huawei 构建华为快应用
78 \t或使用nanachi build:bu 构建百度智能小程序
79 \t或使用nanachi build:qq 构建QQ小程序
80 \t或使用nanachi build:h5 构建h5
81 \t或使用nanachi build:360 构建360小程序`);
82 console.log();
83 console.log(chalk_1.default.magenta('请敲入下面两行命令,享受您的开发之旅' +
84 chalk_1.default.magenta.bold('(npm i可改成yarn)')));
85 console.log();
86 console.log(` cd ${path.relative(cwd, appPath)} && npm i `);
87 console.log(' nanachi watch');
88 console.log();
89}
90function init(appName) {
91 return __awaiter(this, void 0, void 0, function* () {
92 const appPath = checkAppName(appName);
93 const { appTplName } = yield askTemplate();
94 copyTemplate({ appPath, appTplName });
95 outputLog({ appName, appPath });
96 });
97}
98exports.default = init;