@uni-plus/create 0.0.2 → 0.1.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/CHANGELOG.md +6 -0
- package/dist/index.js +75 -1
- package/dist/index.js.map +1 -1
- package/package.json +12 -1
- package/src/index.ts +80 -2
- package/tsconfig.json +4 -1
package/CHANGELOG.md
CHANGED
package/dist/index.js
CHANGED
@@ -7,10 +7,84 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8
8
|
});
|
9
9
|
};
|
10
|
+
import { select, input, confirm } from '@inquirer/prompts';
|
11
|
+
import os from 'node:os';
|
12
|
+
import { NpmPackage } from '@uni-plus/utils';
|
13
|
+
import path from 'node:path';
|
14
|
+
import ora from 'ora';
|
15
|
+
// @ts-ignore
|
16
|
+
import fse from 'fs-extra';
|
17
|
+
import ejs from 'ejs';
|
18
|
+
import { glob } from 'glob';
|
10
19
|
function create() {
|
11
20
|
return __awaiter(this, void 0, void 0, function* () {
|
12
|
-
|
21
|
+
const projectTemplate = yield select({
|
22
|
+
message: '请选择项目模版',
|
23
|
+
choices: [
|
24
|
+
{
|
25
|
+
name: 'uni-plus Base 模板',
|
26
|
+
value: '@uni-plus/template-uni-plus-base'
|
27
|
+
},
|
28
|
+
{
|
29
|
+
name: 'uni-plus Demo 模板',
|
30
|
+
value: '@uni-plus/template-uni-plus-demo'
|
31
|
+
}
|
32
|
+
],
|
33
|
+
});
|
34
|
+
let projectName = '';
|
35
|
+
while (!projectName) {
|
36
|
+
projectName = yield input({ message: '请输入项目名' });
|
37
|
+
}
|
38
|
+
const targetPath = path.join(process.cwd(), projectName);
|
39
|
+
if (fse.existsSync(targetPath)) {
|
40
|
+
const empty = yield confirm({ message: '该目录不为空,是否清空' });
|
41
|
+
if (empty) {
|
42
|
+
fse.emptyDirSync(targetPath);
|
43
|
+
}
|
44
|
+
else {
|
45
|
+
process.exit(0);
|
46
|
+
}
|
47
|
+
}
|
48
|
+
const pkg = new NpmPackage({
|
49
|
+
name: projectTemplate,
|
50
|
+
targetPath: path.join(os.homedir(), '.uni-plus-template')
|
51
|
+
});
|
52
|
+
if (!(yield pkg.exists())) {
|
53
|
+
const spinner = ora('下载模版中...').start();
|
54
|
+
yield pkg.install();
|
55
|
+
yield sleep(1000);
|
56
|
+
spinner.stop();
|
57
|
+
}
|
58
|
+
else {
|
59
|
+
const spinner = ora('更新模版中...').start();
|
60
|
+
yield pkg.update();
|
61
|
+
yield sleep(1000);
|
62
|
+
spinner.stop();
|
63
|
+
}
|
64
|
+
const spinner = ora('创建项目中...').start();
|
65
|
+
yield sleep(1000);
|
66
|
+
const templatePath = path.join(pkg.npmFilePath, 'template');
|
67
|
+
fse.copySync(templatePath, targetPath);
|
68
|
+
spinner.stop();
|
69
|
+
const files = yield glob('**', {
|
70
|
+
cwd: targetPath,
|
71
|
+
nodir: true,
|
72
|
+
ignore: 'node_modules/**'
|
73
|
+
});
|
74
|
+
for (let i = 0; i < files.length; i++) {
|
75
|
+
const filePath = path.join(targetPath, files[i]);
|
76
|
+
const renderResult = yield ejs.renderFile(filePath, {
|
77
|
+
projectName
|
78
|
+
});
|
79
|
+
fse.writeFileSync(filePath, renderResult);
|
80
|
+
}
|
13
81
|
});
|
14
82
|
}
|
83
|
+
function sleep(timeout) {
|
84
|
+
return new Promise((resolve => {
|
85
|
+
setTimeout(resolve, timeout);
|
86
|
+
}));
|
87
|
+
}
|
88
|
+
create();
|
15
89
|
export default create;
|
16
90
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,SAAe,MAAM;;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,aAAa;AACb,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,SAAe,MAAM;;QAEnB,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC;YACnC,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,kBAAkB;oBACxB,KAAK,EAAE,kCAAkC;iBAC1C;gBACD;oBACE,IAAI,EAAE,kBAAkB;oBACxB,KAAK,EAAE,kCAAkC;iBAC1C;aACF;SACF,CAAC,CAAC;QAEH,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,OAAO,CAAC,WAAW,EAAE,CAAC;YACpB,WAAW,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QAEzD,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;YACxD,IAAI,KAAK,EAAE,CAAC;gBACV,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC;YACzB,IAAI,EAAE,eAAe;YACrB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,oBAAoB,CAAC;SAC1D,CAAC,CAAC;QAEH,IAAI,CAAC,CAAA,MAAM,GAAG,CAAC,MAAM,EAAE,CAAA,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAElB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAE5D,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAEvC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;YAC7B,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,iBAAiB;SAC1B,CAAC,CAAA;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE;gBAClD,WAAW;aACZ,CAAC,CAAA;YACF,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC5C,CAAC;IAEH,CAAC;CAAA;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE;QAC5B,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,EAAE,CAAC;AAET,eAAe,MAAM,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@uni-plus/create",
|
3
|
-
"version": "0.0
|
3
|
+
"version": "0.1.0",
|
4
4
|
"description": "",
|
5
5
|
"type": "module",
|
6
6
|
"main": "dist/index.js",
|
@@ -11,6 +11,17 @@
|
|
11
11
|
"keywords": [],
|
12
12
|
"author": "",
|
13
13
|
"license": "ISC",
|
14
|
+
"dependencies": {
|
15
|
+
"@inquirer/prompts": "^7.2.3",
|
16
|
+
"ejs": "^3.1.10",
|
17
|
+
"fs-extra": "^11.3.0",
|
18
|
+
"glob": "^11.0.1",
|
19
|
+
"ora": "^8.1.1",
|
20
|
+
"@uni-plus/utils": "^0.1.0"
|
21
|
+
},
|
22
|
+
"devDependencies": {
|
23
|
+
"@types/ejs": "^3.1.5"
|
24
|
+
},
|
14
25
|
"scripts": {
|
15
26
|
"test": "echo \"Error: no test specified\" && exit 1"
|
16
27
|
}
|
package/src/index.ts
CHANGED
@@ -1,6 +1,84 @@
|
|
1
|
+
import { select, input, confirm } from '@inquirer/prompts';
|
2
|
+
import os from 'node:os';
|
3
|
+
import { NpmPackage } from '@uni-plus/utils';
|
4
|
+
import path from 'node:path';
|
5
|
+
import ora from 'ora';
|
6
|
+
// @ts-ignore
|
7
|
+
import fse from 'fs-extra';
|
8
|
+
import ejs from 'ejs';
|
9
|
+
import { glob } from 'glob';
|
10
|
+
|
1
11
|
async function create() {
|
2
|
-
|
12
|
+
|
13
|
+
const projectTemplate = await select({
|
14
|
+
message: '请选择项目模版',
|
15
|
+
choices: [
|
16
|
+
{
|
17
|
+
name: 'uni-plus Base 模板',
|
18
|
+
value: '@uni-plus/template-uni-plus-base'
|
19
|
+
},
|
20
|
+
{
|
21
|
+
name: 'uni-plus Demo 模板',
|
22
|
+
value: '@uni-plus/template-uni-plus-demo'
|
23
|
+
}
|
24
|
+
],
|
25
|
+
});
|
26
|
+
|
27
|
+
let projectName = '';
|
28
|
+
while (!projectName) {
|
29
|
+
projectName = await input({ message: '请输入项目名' });
|
30
|
+
}
|
31
|
+
|
32
|
+
const targetPath = path.join(process.cwd(), projectName);
|
33
|
+
|
34
|
+
if (fse.existsSync(targetPath)) {
|
35
|
+
const empty = await confirm({ message: '该目录不为空,是否清空' });
|
36
|
+
if (empty) {
|
37
|
+
fse.emptyDirSync(targetPath);
|
38
|
+
} else {
|
39
|
+
process.exit(0);
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
const pkg = new NpmPackage({
|
44
|
+
name: projectTemplate,
|
45
|
+
targetPath: path.join(os.homedir(), '.uni-plus-template')
|
46
|
+
});
|
47
|
+
|
48
|
+
if (!await pkg.exists()) {
|
49
|
+
const spinner = ora('下载模版中...').start();
|
50
|
+
await pkg.install();
|
51
|
+
spinner.stop();
|
52
|
+
} else {
|
53
|
+
const spinner = ora('更新模版中...').start();
|
54
|
+
await pkg.update();
|
55
|
+
spinner.stop();
|
56
|
+
}
|
57
|
+
|
58
|
+
const spinner = ora('创建项目中...').start();
|
59
|
+
|
60
|
+
const templatePath = path.join(pkg.npmFilePath, 'template');
|
61
|
+
|
62
|
+
fse.copySync(templatePath, targetPath);
|
63
|
+
|
64
|
+
spinner.stop();
|
65
|
+
|
66
|
+
const files = await glob('**', {
|
67
|
+
cwd: targetPath,
|
68
|
+
nodir: true,
|
69
|
+
ignore: 'node_modules/**'
|
70
|
+
})
|
71
|
+
|
72
|
+
for (let i = 0; i < files.length; i++) {
|
73
|
+
const filePath = path.join(targetPath, files[i]);
|
74
|
+
const renderResult = await ejs.renderFile(filePath, {
|
75
|
+
projectName
|
76
|
+
})
|
77
|
+
fse.writeFileSync(filePath, renderResult);
|
78
|
+
}
|
79
|
+
|
80
|
+
console.log(`项目 ${projectName} 创建成功`);
|
81
|
+
|
3
82
|
}
|
4
83
|
|
5
84
|
export default create;
|
6
|
-
|