@luzhaoqi/test 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/micro.js ADDED
@@ -0,0 +1,91 @@
1
+ #! /usr/bin/env node
2
+
3
+ const fs = require("fs"); // node.js文件系统
4
+ const exec = require("child_process").exec; // 启动一个新进程,用来执行命令
5
+ // const config = require("../templates"); // 引入定义好的基础项目列表
6
+ const chalk = require("chalk"); // 给提示语添加色彩
7
+ const clear = require("clear"); // 清除命令
8
+ const figlet = require("figlet"); // 可以用来定制CLI执行时的头部
9
+ const inquirer = require("inquirer"); // 提供交互式命令行
10
+ const handlebars = require("handlebars"); // 一种简单的模板语言,可以自行百度一下
11
+ const clui = require("clui"); // 提供等待的状态
12
+ const program = require("commander");
13
+ const Spinner = clui.Spinner;
14
+ const status = new Spinner("正在下载...");
15
+ const version = require("./../package.json");
16
+ const removeDir = require("./remove"); // 用来删除文件和文件夹
17
+ const templates = {
18
+ container: "git@36.133.80.161:frame/front/micro-container.git",
19
+ main: "git@36.133.80.161:frame/front/micro-main.git",
20
+ common: "git@36.133.80.161:frame/front/micocommon.git",
21
+ sub: "git@36.133.80.161:frame/front/micro-sub.git",
22
+ };
23
+ clear();
24
+ // 定制酷炫CLI头部
25
+ console.log(
26
+ chalk.yellow(
27
+ figlet.textSync("Hk-Micro", {
28
+ horizontalLayout: "default",
29
+ verticalLayout: "default",
30
+ width: 100,
31
+ whitespaceBreak: true,
32
+ })
33
+ )
34
+ );
35
+ program
36
+ .version(version.version)
37
+ .command("init")
38
+ .description("创建项目")
39
+ .action((name) => {
40
+ inquirer
41
+ .prompt([
42
+ {
43
+ name: "projectName",
44
+ type: "input",
45
+ message: "请输入你的项目名称:",
46
+ validate: function (value) {
47
+ if (value.length) {
48
+ return true;
49
+ } else {
50
+ return "请输入你的项目名称";
51
+ }
52
+ },
53
+ },
54
+ {
55
+ name: "tenant",
56
+ type: "list",
57
+ message: "请选择项目类型?",
58
+ choices: ["租户", "非租户"],
59
+ },
60
+ ])
61
+ .then((answers) => {
62
+ const { projectName } = answers;
63
+
64
+ let cmdStr = `git clone ${templates.container} ./${projectName} && cd ${projectName} && git clone ${templates.common} ./micro-common && mkdir packages && git clone ${templates.main} ./packages/micro-main && git clone ${templates.sub} ./packages/micro-sub `;
65
+ status.start();
66
+ exec(cmdStr, (error, stdou, stderr) => {
67
+ status.stop();
68
+ if (error) {
69
+ console.log("发生了一个错误:", chalk.red(JSON.stringify(error)));
70
+ process.exit();
71
+ }
72
+ // 删除模板自带的 .git 文件
73
+ removeDir(`${projectName}/packages/micro-main/.git`);
74
+ removeDir(`${projectName}/packages/micro-sub/.git`);
75
+ removeDir(`${projectName}/.git`);
76
+ removeDir(`${projectName}/micro-common/.git`);
77
+ // fs.unlinkSync(`${projectName}/scripts/clone.sh`);
78
+ // fs.writeFileSync(`${projectName}/scripts/clone.sh`, sh);
79
+ console.log(chalk.green("\n √ 下载完成!"));
80
+ console.log(chalk.cyan(`\n yarn install \n`));
81
+ process.exit();
82
+ });
83
+ })
84
+ .catch((error) => {
85
+ console.log(error);
86
+ console.log("发生了一个错误:", chalk.red(JSON.stringify(error)));
87
+ process.exit();
88
+ });
89
+ });
90
+
91
+ program.parse();
package/bin/remove.js ADDED
@@ -0,0 +1,20 @@
1
+ const fs = require("fs");
2
+ let path = require("path");
3
+
4
+ function removeDir(dir) {
5
+ let files = fs.readdirSync(dir); //返回一个包含“指定目录下所有文件名称”的数组对象
6
+ for (var i = 0; i < files.length; i++) {
7
+ let newPath = path.join(dir, files[i]);
8
+ let stat = fs.statSync(newPath); // 获取fs.Stats 对象
9
+ if (stat.isDirectory()) {
10
+ //判断是否是文件夹,如果是文件夹就递归下去
11
+ removeDir(newPath);
12
+ } else {
13
+ //删除文件
14
+ fs.unlinkSync(newPath);
15
+ }
16
+ }
17
+ fs.rmdirSync(dir); //如果文件夹是空的,就将自己删除掉
18
+ }
19
+
20
+ module.exports = removeDir;
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@luzhaoqi/test",
3
+ "version": "1.0.0",
4
+ "description": "micro快速创建模板",
5
+ "main": "bin/micro.js",
6
+ "bin": "bin/micro.js",
7
+ "scripts": {
8
+ "test": "echo \"Error: no test specified\" && exit 1"
9
+ },
10
+ "keywords": [
11
+ "cli"
12
+ ],
13
+ "license": "MIT",
14
+ "dependencies": {
15
+ "chalk": "^4.1.2",
16
+ "clear": "^0.1.0",
17
+ "clui": "^0.3.6",
18
+ "commander": "^8.2.0",
19
+ "figlet": "^1.5.2",
20
+ "handlebars": "^4.7.7",
21
+ "inquirer": "^8.1.5",
22
+ "update-notifier": "^5.1.0"
23
+ }
24
+ }