create-aiot 2.0.1-alpha.0 → 2.0.1-alpha.10

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/lib/bin.js CHANGED
@@ -20,7 +20,8 @@ function main() {
20
20
  name: 'create-aiot',
21
21
  description: 'create aiot project',
22
22
  version: '2.0.0',
23
- defaultCommand: command
23
+ defaultCommand: command,
24
+ commandList: [yield (0, _1.getCrerateXtsCommand)()]
24
25
  };
25
26
  commander_1.Command.registeProgram(config);
26
27
  });
package/lib/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["bin.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,uDAA2D;AAC3D,wBAAwC;AAExC,SAAe,IAAI;;QACjB,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAoB,GAAE,CAAA;QAC5C,UAAU;QACV,MAAM,MAAM,GAAa;YACvB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,qBAAqB;YAClC,OAAO,EAAE,OAAO;YAChB,cAAc,EAAE,OAAO;SACxB,CAAA;QAED,mBAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;CAAA;AAED,IAAI,EAAE,CAAA","file":"bin.js","sourcesContent":["#!/usr/bin/env node\n\nimport { Command, IProgram } from '@aiot-toolkit/commander'\nimport { getAiotCreateCommand } from '.'\n\nasync function main() {\n const command = await getAiotCreateCommand()\n // 创建命令行配置\n const config: IProgram = {\n name: 'create-aiot',\n description: 'create aiot project',\n version: '2.0.0',\n defaultCommand: command\n }\n\n Command.registeProgram(config)\n}\n\nmain()\n"],"sourceRoot":"../src"}
1
+ {"version":3,"sources":["bin.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,uDAA2D;AAC3D,wBAA8D;AAE9D,SAAe,IAAI;;QACjB,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAoB,GAAE,CAAA;QAE5C,UAAU;QACV,MAAM,MAAM,GAAa;YACvB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,qBAAqB;YAClC,OAAO,EAAE,OAAO;YAChB,cAAc,EAAE,OAAO;YACvB,WAAW,EAAE,CAAC,MAAM,IAAA,uBAAoB,GAAE,CAAC;SAC5C,CAAA;QAED,mBAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;CAAA;AAED,IAAI,EAAE,CAAA","file":"bin.js","sourcesContent":["#!/usr/bin/env node\n\nimport { Command, IProgram } from '@aiot-toolkit/commander'\nimport { getAiotCreateCommand, getCrerateXtsCommand } from '.'\n\nasync function main() {\n const command = await getAiotCreateCommand()\n\n // 创建命令行配置\n const config: IProgram = {\n name: 'create-aiot',\n description: 'create aiot project',\n version: '2.0.0',\n defaultCommand: command,\n commandList: [await getCrerateXtsCommand()]\n }\n\n Command.registeProgram(config)\n}\n\nmain()\n"],"sourceRoot":"../src"}
package/lib/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  import { ICommand } from '@aiot-toolkit/commander';
2
2
  export declare function getAiotCreateCommand(): Promise<ICommand>;
3
+ export declare function getCrerateXtsCommand(): Promise<ICommand>;
package/lib/index.js CHANGED
@@ -12,10 +12,44 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.getAiotCreateCommand = void 0;
15
+ exports.getCrerateXtsCommand = exports.getAiotCreateCommand = void 0;
16
16
  const fs_1 = __importDefault(require("fs"));
17
17
  const path_1 = __importDefault(require("path"));
18
18
  const TemplateUtil_1 = __importDefault(require("./utils/TemplateUtil"));
19
+ function createAction(options, tem) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ const templateList = yield TemplateUtil_1.default.requestTemplateList();
22
+ const { name, v, aspect, packageName, template = tem, eslint = false } = options;
23
+ const templateItem = templateList.find((item) => item.name === template);
24
+ if (templateItem) {
25
+ const param = {
26
+ name,
27
+ version: v,
28
+ template: templateItem,
29
+ packageName,
30
+ tools: {
31
+ eslint
32
+ },
33
+ aspect
34
+ };
35
+ TemplateUtil_1.default.createProject(param, {
36
+ data: { version: v, appName: name, packageName },
37
+ includes: (path) => {
38
+ const stats = fs_1.default.statSync(path);
39
+ if (stats.isDirectory()) {
40
+ return ['src'].includes(path_1.default.basename(path));
41
+ }
42
+ else {
43
+ return ['.json', '.ux'].includes(path_1.default.extname(path));
44
+ }
45
+ }
46
+ });
47
+ }
48
+ else {
49
+ console.log('template error');
50
+ }
51
+ });
52
+ }
19
53
  function getAiotCreateCommand() {
20
54
  return __awaiter(this, void 0, void 0, function* () {
21
55
  const templateList = yield TemplateUtil_1.default.requestTemplateList();
@@ -66,38 +100,55 @@ function getAiotCreateCommand() {
66
100
  }
67
101
  ],
68
102
  action: (option) => {
69
- const { name, template, eslint, v, aspect } = option;
70
- const templateItem = templateList.find((item) => item.name === template);
71
- if (templateItem) {
72
- const param = {
73
- name,
74
- version: v,
75
- template: templateItem,
76
- tools: {
77
- eslint
78
- },
79
- aspect
80
- };
81
- TemplateUtil_1.default.createProject(param, {
82
- data: { version: v, appName: name },
83
- includes: (path) => {
84
- const stats = fs_1.default.statSync(path);
85
- if (stats.isDirectory()) {
86
- return ['src'].includes(path_1.default.basename(path));
87
- }
88
- else {
89
- return ['.json', '.ux'].includes(path_1.default.extname(path));
90
- }
91
- }
92
- });
93
- }
94
- else {
95
- console.log('template error');
96
- }
103
+ createAction(option);
97
104
  }
98
105
  };
99
106
  });
100
107
  }
101
108
  exports.getAiotCreateCommand = getAiotCreateCommand;
109
+ function getCrerateXtsCommand() {
110
+ return __awaiter(this, void 0, void 0, function* () {
111
+ return {
112
+ name: 'xts',
113
+ description: 'create xts template project',
114
+ paramList: [
115
+ {
116
+ name: 'name',
117
+ description: 'poject name',
118
+ enableInquirer: true,
119
+ defaultValue: 'xts-project',
120
+ type: 'string',
121
+ validate(value) {
122
+ return TemplateUtil_1.default.validateProjectName(value);
123
+ }
124
+ },
125
+ {
126
+ name: 'packageName',
127
+ description: 'package name',
128
+ enableInquirer: true,
129
+ defaultValue: 'xts.app.test',
130
+ type: 'string'
131
+ },
132
+ {
133
+ name: 'v',
134
+ description: 'poject version',
135
+ enableInquirer: true,
136
+ defaultValue: '1.0.0',
137
+ type: 'string'
138
+ },
139
+ {
140
+ name: 'aspect',
141
+ type: 'string',
142
+ description: 'Do you need to create some aspect, with multiple aspect names separated by commas',
143
+ enableInquirer: true
144
+ }
145
+ ],
146
+ action: (option) => {
147
+ createAction(option, 'xts');
148
+ }
149
+ };
150
+ });
151
+ }
152
+ exports.getCrerateXtsCommand = getCrerateXtsCommand;
102
153
 
103
154
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,4CAAmB;AACnB,gDAAuB;AAEvB,wEAA+C;AAC/C,SAAsB,oBAAoB;;QACxC,MAAM,YAAY,GAAG,MAAM,sBAAY,CAAC,mBAAmB,EAAE,CAAA;QAE7D,OAAO;YACL,IAAI,EAAE,EAAE;YACR,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,aAAa;oBAC1B,cAAc,EAAE,IAAI;oBACpB,YAAY,EAAE,cAAc;oBAC5B,IAAI,EAAE,QAAQ;oBACd,QAAQ,CAAC,KAAa;wBACpB,OAAO,sBAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;oBAChD,CAAC;iBACF;gBACD;oBACE,IAAI,EAAE,GAAG;oBACT,WAAW,EAAE,gBAAgB;oBAC7B,cAAc,EAAE,IAAI;oBACpB,YAAY,EAAE,OAAO;oBACrB,IAAI,EAAE,QAAQ;iBACf;gBACD;oBACE,IAAI,EAAE,UAAU;oBAChB,WAAW,EAAE,iBAAiB;oBAC9B,IAAI,EAAE,QAAQ;oBACd,cAAc,EAAE,IAAI;oBACpB,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;wBACjC,OAAO;4BACL,KAAK,EAAE,IAAI,CAAC,IAAI;4BAChB,WAAW,EAAE,IAAI,CAAC,WAAW;yBAC9B,CAAA;oBACH,CAAC,CAAC;iBACH;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,sDAAsD;oBACnE,cAAc,EAAE,IAAI;oBACpB,YAAY,EAAE,KAAK;iBACpB;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,YAAY;iBAC1B;aACF;YACD,MAAM,EAAE,CAAC,MAAW,EAAE,EAAE;gBACtB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;gBACpD,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;gBACxE,IAAI,YAAY,EAAE;oBAChB,MAAM,KAAK,GAAkB;wBAC3B,IAAI;wBACJ,OAAO,EAAE,CAAC;wBACV,QAAQ,EAAE,YAAY;wBACtB,KAAK,EAAE;4BACL,MAAM;yBACP;wBACD,MAAM;qBACP,CAAA;oBACD,sBAAY,CAAC,aAAa,CAAC,KAAK,EAAE;wBAChC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;wBACnC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;4BACjB,MAAM,KAAK,GAAG,YAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;4BAC/B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE;gCACvB,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;6BAC7C;iCAAM;gCACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;6BACrD;wBACH,CAAC;qBACF,CAAC,CAAA;iBACH;qBAAM;oBACL,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;iBAC9B;YACH,CAAC;SACF,CAAA;IACH,CAAC;CAAA;AA9ED,oDA8EC","file":"index.js","sourcesContent":["import { ICommand } from '@aiot-toolkit/commander'\nimport fs from 'fs'\nimport Path from 'path'\nimport IProjectParam from './interface/IProjectParam'\nimport TemplateUtil from './utils/TemplateUtil'\nexport async function getAiotCreateCommand(): Promise<ICommand> {\n const templateList = await TemplateUtil.requestTemplateList()\n\n return {\n name: '',\n description: 'default',\n paramList: [\n {\n name: 'name',\n description: 'poject name',\n enableInquirer: true,\n defaultValue: 'aiot-project',\n type: 'string',\n validate(value: string) {\n return TemplateUtil.validateProjectName(value)\n }\n },\n {\n name: 'v',\n description: 'poject version',\n enableInquirer: true,\n defaultValue: '1.0.0',\n type: 'string'\n },\n {\n name: 'template',\n description: 'prject template',\n type: 'select',\n enableInquirer: true,\n choices: templateList.map((item) => {\n return {\n value: item.name,\n description: item.description\n }\n })\n },\n {\n name: 'eslint',\n type: 'confirm',\n description: 'Enabling eslint, if true, will create an eslint file',\n enableInquirer: true,\n defaultValue: false\n },\n {\n name: 'aspect',\n type: 'string',\n description: '配置aspect名称'\n }\n ],\n action: (option: any) => {\n const { name, template, eslint, v, aspect } = option\n const templateItem = templateList.find((item) => item.name === template)\n if (templateItem) {\n const param: IProjectParam = {\n name,\n version: v,\n template: templateItem,\n tools: {\n eslint\n },\n aspect\n }\n TemplateUtil.createProject(param, {\n data: { version: v, appName: name },\n includes: (path) => {\n const stats = fs.statSync(path)\n if (stats.isDirectory()) {\n return ['src'].includes(Path.basename(path))\n } else {\n return ['.json', '.ux'].includes(Path.extname(path))\n }\n }\n })\n } else {\n console.log('template error')\n }\n }\n }\n}\n"],"sourceRoot":"../src"}
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { ICommand } from '@aiot-toolkit/commander'\nimport fs from 'fs'\nimport Path from 'path'\nimport IProjectParam from './interface/IProjectParam'\nimport TemplateUtil from './utils/TemplateUtil'\n\nasync function createAction(options: any, tem?: string) {\n const templateList = await TemplateUtil.requestTemplateList()\n\n const { name, v, aspect, packageName, template = tem, eslint = false } = options\n\n const templateItem = templateList.find((item) => item.name === template)\n if (templateItem) {\n const param: IProjectParam = {\n name,\n version: v,\n template: templateItem,\n packageName,\n tools: {\n eslint\n },\n aspect\n }\n TemplateUtil.createProject(param, {\n data: { version: v, appName: name, packageName },\n includes: (path) => {\n const stats = fs.statSync(path)\n if (stats.isDirectory()) {\n return ['src'].includes(Path.basename(path))\n } else {\n return ['.json', '.ux'].includes(Path.extname(path))\n }\n }\n })\n } else {\n console.log('template error')\n }\n}\n\nexport async function getAiotCreateCommand(): Promise<ICommand> {\n const templateList = await TemplateUtil.requestTemplateList()\n\n return {\n name: '',\n description: 'default',\n paramList: [\n {\n name: 'name',\n description: 'poject name',\n enableInquirer: true,\n defaultValue: 'aiot-project',\n type: 'string',\n validate(value: string) {\n return TemplateUtil.validateProjectName(value)\n }\n },\n {\n name: 'v',\n description: 'poject version',\n enableInquirer: true,\n defaultValue: '1.0.0',\n type: 'string'\n },\n {\n name: 'template',\n description: 'prject template',\n type: 'select',\n enableInquirer: true,\n choices: templateList.map((item) => {\n return {\n value: item.name,\n description: item.description\n }\n })\n },\n {\n name: 'eslint',\n type: 'confirm',\n description: 'Enabling eslint, if true, will create an eslint file',\n enableInquirer: true,\n defaultValue: false\n },\n {\n name: 'aspect',\n type: 'string',\n description: '配置aspect名称'\n }\n ],\n action: (option: any) => {\n createAction(option)\n }\n }\n}\n\nexport async function getCrerateXtsCommand(): Promise<ICommand> {\n return {\n name: 'xts',\n description: 'create xts template project',\n paramList: [\n {\n name: 'name',\n description: 'poject name',\n enableInquirer: true,\n defaultValue: 'xts-project',\n type: 'string',\n validate(value: string) {\n return TemplateUtil.validateProjectName(value)\n }\n },\n {\n name: 'packageName',\n description: 'package name',\n enableInquirer: true,\n defaultValue: 'xts.app.test',\n type: 'string'\n },\n {\n name: 'v',\n description: 'poject version',\n enableInquirer: true,\n defaultValue: '1.0.0',\n type: 'string'\n },\n {\n name: 'aspect',\n type: 'string',\n description:\n 'Do you need to create some aspect, with multiple aspect names separated by commas',\n enableInquirer: true\n }\n ],\n action: (option: any) => {\n createAction(option, 'xts')\n }\n }\n}\n"],"sourceRoot":"../src"}
@@ -10,4 +10,5 @@ export default interface IProjectParam {
10
10
  eslint: boolean;
11
11
  };
12
12
  aspect?: string;
13
+ packageName?: string;
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["interface/IProjectParam.ts"],"names":[],"mappings":"","file":"IProjectParam.js","sourcesContent":["import ITemplate from './ITemplate'\n\n/**\n * IProjectParam\n */\nexport default interface IProjectParam {\n name: string\n version: string\n template: ITemplate\n tools: {\n eslint: boolean\n }\n aspect?: string\n}\n"],"sourceRoot":"../../src"}
1
+ {"version":3,"sources":["interface/IProjectParam.ts"],"names":[],"mappings":"","file":"IProjectParam.js","sourcesContent":["import ITemplate from './ITemplate'\n\n/**\n * IProjectParam\n */\nexport default interface IProjectParam {\n name: string\n version: string\n template: ITemplate\n tools: {\n eslint: boolean\n }\n aspect?: string\n packageName?: string\n}\n"],"sourceRoot":"../../src"}
@@ -5,8 +5,8 @@
5
5
  "description": "ux-it is..."
6
6
  },
7
7
  {
8
- "name": "xts-app-template",
9
- "path": "./xts-app-template/app-package-name",
8
+ "name": "xts",
9
+ "path": "./xts/app-package-name",
10
10
  "description": "xts app template"
11
11
  },
12
12
  {
@@ -1,5 +1,5 @@
1
1
  app MainApp {
2
- onCreate(intent) {
2
+ onCreate(intent: RouteInfo) {
3
3
  console.log('App onCreate.')
4
4
  }
5
5
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "package": "ts.app.template",
2
+ "package": "{{packageName}}",
3
3
  "name": "{{appName}}",
4
4
  "icon": "/$app_resource/icon.png",
5
5
  "versionName": "1.0",
@@ -1,5 +1,5 @@
1
1
  vaspect MainAspect {
2
- onCreate(intent) {
2
+ onCreate(intent: RouteInfo) {
3
3
  console.log('MainAspect onCreate.')
4
4
  }
5
5
 
@@ -11,6 +11,7 @@ declare class TemplateUtil {
11
11
  * @returns
12
12
  */
13
13
  static validateProjectName(value: string): boolean | string;
14
+ static createXtsProject(): Promise<void>;
14
15
  static createProject(param: IProjectParam, keywords?: {
15
16
  data: Record<string, string>;
16
17
  includes?: (path: string) => boolean;
@@ -42,6 +42,9 @@ class TemplateUtil {
42
42
  }
43
43
  return true;
44
44
  }
45
+ static createXtsProject() {
46
+ return __awaiter(this, void 0, void 0, function* () { });
47
+ }
45
48
  static createProject(param, keywords, plugins) {
46
49
  return __awaiter(this, void 0, void 0, function* () {
47
50
  const { name, template, aspect } = param;
@@ -106,7 +109,7 @@ class TemplateUtil {
106
109
  static createAspect(projectAbsolutePath, aspect) {
107
110
  // 按照逗号分割字符串,且去掉空格
108
111
  const aspects = aspect.replace(' ', '').split(',');
109
- const aspectAbsolutePath = path_1.default.join(__dirname, '../template', 'xts-app-template', 'aspect1');
112
+ const aspectAbsolutePath = path_1.default.join(__dirname, '../template', 'xts', 'aspect1');
110
113
  // 循环生成自定义aspect
111
114
  aspects.map((aspectItem) => {
112
115
  const targetAspectPath = path_1.default.join(projectAbsolutePath, aspectItem);
@@ -123,7 +126,7 @@ class TemplateUtil {
123
126
  return ['.json', '.ux'].includes(path_1.default.extname(path));
124
127
  }
125
128
  }
126
- }, projectAbsolutePath);
129
+ }, targetAspectPath);
127
130
  });
128
131
  }
129
132
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["utils/TemplateUtil.ts"],"names":[],"mappings":"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","file":"TemplateUtil.js","sourcesContent":["import FileUtil from '@aiot-toolkit/shared-utils/lib/utils/FileUtil'\nimport NetworkUtil from '@aiot-toolkit/shared-utils/lib/utils/NetworkUtil'\nimport { input } from '@inquirer/prompts'\nimport FS from 'fs-extra'\nimport Path from 'path'\nimport IProjectParam from '../interface/IProjectParam'\nimport ITemplate from '../interface/ITemplate'\nimport json from '../template/template.json'\n\n/**\n * TemplateUtil\n */\nclass TemplateUtil {\n static async requestTemplateList(): Promise<ITemplate[]> {\n return json\n }\n\n /**\n * 验证项目名称,只能包含:字母、数字、-、_\n * @param value\n * @returns\n */\n static validateProjectName(value: string): boolean | string {\n const reg = /^[0-9a-zA-Z_\\u4e00-\\u9fa5\\-]+$/\n if (!value) {\n return `Please enter a project name`\n }\n if (!reg.test(value)) {\n return 'The project name can contain only Chinese, letters, number, _ , -'\n }\n\n return true\n }\n\n static async createProject(\n param: IProjectParam,\n keywords?: {\n data: Record<string, string>\n includes?: (path: string) => boolean\n },\n plugins?: ((projectPath: string, param: IProjectParam) => Promise<void>)[]\n ) {\n const { name, template, aspect } = param\n\n // 获取项目名称和绝对路径,如果存在,则再次输入\n let projectName = name\n let projectAbsolutePath = Path.join(process.cwd(), projectName)\n while (FS.existsSync(projectAbsolutePath)) {\n console.log(`${projectAbsolutePath} exists. `)\n projectName = await input({\n message: 'please new project name',\n validate: this.validateProjectName\n })\n projectAbsolutePath = Path.join(process.cwd(), projectName)\n }\n\n FS.mkdirSync(projectAbsolutePath)\n\n // 复制模板\n if (template) {\n const { path } = template\n // 远程\n if (['http', 'git'].find((item) => path.startsWith(item))) {\n await NetworkUtil.gitClone(path, projectAbsolutePath)\n }\n //本地\n else {\n const templateAbsolutePath = Path.join(__dirname, '../template/', path)\n FS.copySync(templateAbsolutePath, projectAbsolutePath)\n // xts项目-处理aspect内容\n aspect && TemplateUtil.createAspect(projectAbsolutePath, aspect)\n }\n }\n // 遍历项目文件,替换词语\n if (keywords && keywords.data) {\n TemplateUtil.performReplace(keywords, projectAbsolutePath)\n }\n\n // 执行插件\n if (plugins) {\n for (let item of plugins) {\n await item(projectAbsolutePath, param)\n }\n }\n }\n /**\n * 遍历项目文件,替换词语\n * @param keywords\n * @param projectAbsolutePath\n */\n static performReplace(\n keywords: {\n data: Record<string, string>\n includes?: (path: string) => boolean\n },\n projectAbsolutePath: string\n ) {\n const { data, includes } = keywords\n const files = FileUtil.readAlldirSync(projectAbsolutePath, includes)\n if (files && files.length) {\n files.forEach((item) => {\n FileUtil.replaceFileContent(item, data)\n })\n }\n }\n /**\n * xts项目-处理aspect内容\n * @param projectAbsolutePath\n * @param aspect\n */\n static createAspect(projectAbsolutePath: string, aspect: string) {\n // 按照逗号分割字符串,且去掉空格\n const aspects = aspect.replace(' ', '').split(',')\n const aspectAbsolutePath = Path.join(__dirname, '../template', 'xts-app-template', 'aspect1')\n // 循环生成自定义aspect\n aspects.map((aspectItem) => {\n const targetAspectPath = Path.join(projectAbsolutePath, aspectItem)\n FS.copySync(aspectAbsolutePath, targetAspectPath)\n // 替换关键字\n TemplateUtil.performReplace(\n {\n data: { aspectName: aspectItem },\n includes: (path) => {\n const stats = FS.statSync(path)\n if (stats.isDirectory()) {\n return ['src'].includes(Path.basename(path))\n } else {\n return ['.json', '.ux'].includes(Path.extname(path))\n }\n }\n },\n projectAbsolutePath\n )\n })\n }\n}\nexport default TemplateUtil\n"],"sourceRoot":"../../src"}
1
+ {"version":3,"sources":["utils/TemplateUtil.ts"],"names":[],"mappings":"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","file":"TemplateUtil.js","sourcesContent":["import FileUtil from '@aiot-toolkit/shared-utils/lib/utils/FileUtil'\nimport NetworkUtil from '@aiot-toolkit/shared-utils/lib/utils/NetworkUtil'\nimport { input } from '@inquirer/prompts'\nimport FS from 'fs-extra'\nimport Path from 'path'\nimport IProjectParam from '../interface/IProjectParam'\nimport ITemplate from '../interface/ITemplate'\nimport json from '../template/template.json'\n\n/**\n * TemplateUtil\n */\nclass TemplateUtil {\n static async requestTemplateList(): Promise<ITemplate[]> {\n return json\n }\n\n /**\n * 验证项目名称,只能包含:字母、数字、-、_\n * @param value\n * @returns\n */\n static validateProjectName(value: string): boolean | string {\n const reg = /^[0-9a-zA-Z_\\u4e00-\\u9fa5\\-]+$/\n if (!value) {\n return `Please enter a project name`\n }\n if (!reg.test(value)) {\n return 'The project name can contain only Chinese, letters, number, _ , -'\n }\n\n return true\n }\n\n static async createXtsProject() {}\n\n static async createProject(\n param: IProjectParam,\n keywords?: {\n data: Record<string, string>\n includes?: (path: string) => boolean\n },\n plugins?: ((projectPath: string, param: IProjectParam) => Promise<void>)[]\n ) {\n const { name, template, aspect } = param\n\n // 获取项目名称和绝对路径,如果存在,则再次输入\n let projectName = name\n let projectAbsolutePath = Path.join(process.cwd(), projectName)\n while (FS.existsSync(projectAbsolutePath)) {\n console.log(`${projectAbsolutePath} exists. `)\n projectName = await input({\n message: 'please new project name',\n validate: this.validateProjectName\n })\n projectAbsolutePath = Path.join(process.cwd(), projectName)\n }\n\n FS.mkdirSync(projectAbsolutePath)\n\n // 复制模板\n if (template) {\n const { path } = template\n // 远程\n if (['http', 'git'].find((item) => path.startsWith(item))) {\n await NetworkUtil.gitClone(path, projectAbsolutePath)\n }\n //本地\n else {\n const templateAbsolutePath = Path.join(__dirname, '../template/', path)\n FS.copySync(templateAbsolutePath, projectAbsolutePath)\n // xts项目-处理aspect内容\n aspect && TemplateUtil.createAspect(projectAbsolutePath, aspect)\n }\n }\n // 遍历项目文件,替换词语\n if (keywords && keywords.data) {\n TemplateUtil.performReplace(keywords, projectAbsolutePath)\n }\n\n // 执行插件\n if (plugins) {\n for (let item of plugins) {\n await item(projectAbsolutePath, param)\n }\n }\n }\n /**\n * 遍历项目文件,替换词语\n * @param keywords\n * @param projectAbsolutePath\n */\n static performReplace(\n keywords: {\n data: Record<string, string>\n includes?: (path: string) => boolean\n },\n projectAbsolutePath: string\n ) {\n const { data, includes } = keywords\n const files = FileUtil.readAlldirSync(projectAbsolutePath, includes)\n if (files && files.length) {\n files.forEach((item) => {\n FileUtil.replaceFileContent(item, data)\n })\n }\n }\n /**\n * xts项目-处理aspect内容\n * @param projectAbsolutePath\n * @param aspect\n */\n static createAspect(projectAbsolutePath: string, aspect: string) {\n // 按照逗号分割字符串,且去掉空格\n const aspects = aspect.replace(' ', '').split(',')\n const aspectAbsolutePath = Path.join(__dirname, '../template', 'xts', 'aspect1')\n // 循环生成自定义aspect\n aspects.map((aspectItem) => {\n const targetAspectPath = Path.join(projectAbsolutePath, aspectItem)\n FS.copySync(aspectAbsolutePath, targetAspectPath)\n // 替换关键字\n TemplateUtil.performReplace(\n {\n data: { aspectName: aspectItem },\n includes: (path) => {\n const stats = FS.statSync(path)\n if (stats.isDirectory()) {\n return ['src'].includes(Path.basename(path))\n } else {\n return ['.json', '.ux'].includes(Path.extname(path))\n }\n }\n },\n targetAspectPath\n )\n })\n }\n}\nexport default TemplateUtil\n"],"sourceRoot":"../../src"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-aiot",
3
- "version": "2.0.1-alpha.0",
3
+ "version": "2.0.1-alpha.10",
4
4
  "description": "An easy way to start aiot project",
5
5
  "main": "lib/index.js",
6
6
  "keywords": [
@@ -27,7 +27,7 @@
27
27
  "test": "node ./__tests__/create-aiot.test.js"
28
28
  },
29
29
  "dependencies": {
30
- "@aiot-toolkit/commander": "2.0.1-alpha.0",
30
+ "@aiot-toolkit/commander": "2.0.1-alpha.10",
31
31
  "ansi-colors": "^4.1.3",
32
32
  "cli-progress": "^3.12.0",
33
33
  "simple-git": "^3.19.1"
@@ -35,5 +35,5 @@
35
35
  "devDependencies": {
36
36
  "@types/cli-progress": "^3.11.0"
37
37
  },
38
- "gitHead": "cde5c75fa09622188ee4f1322ff9d53faf4d8520"
38
+ "gitHead": "28da610ac477037586ef355c9382e8a20e81477c"
39
39
  }
@@ -1,9 +0,0 @@
1
- 生成 xts 项目模板需要注意:
2
- 1、用户输入的英文包名,应用在 app-package-name 目录名 及 /app/manifest.json 中的 package 值;
3
- 2、用户输入的中文包名,应用在 /app/manifest.json 中的 name 值;
4
-
5
- 3、用户输入的英文 aspect 名,应用在
6
- a、aspect1 目录名;
7
- b、/aspect1/config.json 中的 name 值;
8
- c、/aspect1/src/manifest.json 中的 name 值;
9
-