@deot/dev-adder 2.7.0 → 2.9.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/dist/index.cjs +56 -59
- package/dist/index.js +56 -59
- package/package.json +7 -8
package/dist/index.cjs
CHANGED
|
@@ -6,69 +6,69 @@ const node_path = require('node:path');
|
|
|
6
6
|
const devShared = require('@deot/dev-shared');
|
|
7
7
|
const ora = require('ora');
|
|
8
8
|
const fs = require('fs-extra');
|
|
9
|
-
const
|
|
10
|
-
const autocomplete = require('inquirer-autocomplete-prompt');
|
|
9
|
+
const prompts = require('@inquirer/prompts');
|
|
11
10
|
|
|
12
|
-
const { prompt, registerPrompt, Separator } = inquirer;
|
|
13
11
|
const getOptions = async () => {
|
|
14
12
|
const { packageFolderNames } = devShared.Locals.impl();
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"package"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
13
|
+
const mode = await prompts.select({
|
|
14
|
+
message: "Select Mode:",
|
|
15
|
+
choices: [
|
|
16
|
+
new prompts.Separator("选择添加的类型:"),
|
|
17
|
+
{
|
|
18
|
+
value: "dependent"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
value: "package"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
default: "package"
|
|
25
|
+
});
|
|
26
|
+
let packageName = "";
|
|
27
|
+
let packageFolderName = "";
|
|
28
|
+
let dependentName = "";
|
|
29
|
+
let args = "";
|
|
30
|
+
if (mode == "dependent") {
|
|
31
|
+
packageFolderName = await prompts.search({
|
|
29
32
|
message: "Select Package To Install:",
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
// suggestOnly: true, 开启后可以验证数据且需要使用tab选中
|
|
33
|
-
default: "index",
|
|
34
|
-
source: (_, input) => {
|
|
35
|
-
input = input || "";
|
|
33
|
+
source: (term) => {
|
|
34
|
+
const v = typeof term === "undefined" ? "index" : term;
|
|
36
35
|
return new Promise(($resolve) => {
|
|
37
|
-
|
|
36
|
+
const filter = v ? packageFolderNames.filter((item) => item.includes(v)) : packageFolderNames;
|
|
38
37
|
$resolve(filter);
|
|
39
38
|
});
|
|
40
39
|
}
|
|
41
|
-
}
|
|
42
|
-
{
|
|
43
|
-
type: "input",
|
|
44
|
-
name: "dependentName",
|
|
40
|
+
});
|
|
41
|
+
dependentName = await prompts.input({
|
|
45
42
|
message: "Input Dependent Name",
|
|
46
43
|
default: "",
|
|
47
|
-
when: (answers) => answers.mode === "dependent",
|
|
48
44
|
validate: (answer) => {
|
|
49
45
|
if (!answer) {
|
|
50
46
|
return "请输入需要添加的模块名";
|
|
51
47
|
}
|
|
52
48
|
return true;
|
|
53
49
|
}
|
|
54
|
-
}
|
|
55
|
-
{
|
|
56
|
-
|
|
57
|
-
name: "args",
|
|
58
|
-
when: (answers) => answers.mode === "dependent",
|
|
59
|
-
message: "Select Install Mode:",
|
|
50
|
+
});
|
|
51
|
+
args = await prompts.select({
|
|
52
|
+
message: "Select Mode:",
|
|
60
53
|
choices: [
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
54
|
+
{
|
|
55
|
+
value: "-S"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
value: "-D"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
value: "-O"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
default: "package"
|
|
65
|
+
});
|
|
66
|
+
packageName = devShared.Locals.getPackageName(packageFolderName);
|
|
67
|
+
}
|
|
68
|
+
if (mode == "package") {
|
|
69
|
+
packageFolderName = await prompts.input({
|
|
69
70
|
message: "Input Package Name",
|
|
70
71
|
default: "",
|
|
71
|
-
when: (answers) => answers.mode === "package",
|
|
72
72
|
validate: (answer) => {
|
|
73
73
|
if (!answer) {
|
|
74
74
|
return "请输入需要添加的包名";
|
|
@@ -78,18 +78,16 @@ const getOptions = async () => {
|
|
|
78
78
|
}
|
|
79
79
|
return true;
|
|
80
80
|
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
registerPrompt("autocomplete", autocomplete);
|
|
84
|
-
let result = await prompt(question);
|
|
85
|
-
if (result.mode == "dependent") {
|
|
86
|
-
result.packageName = devShared.Locals.getPackageName(result.packageFolderName);
|
|
87
|
-
}
|
|
88
|
-
if (result.mode == "package") {
|
|
89
|
-
result.packageName = devShared.Locals.getPackageName(result.packageFolderName);
|
|
81
|
+
});
|
|
82
|
+
packageName = devShared.Locals.getPackageName(packageFolderName);
|
|
90
83
|
}
|
|
91
|
-
|
|
92
|
-
|
|
84
|
+
return {
|
|
85
|
+
mode,
|
|
86
|
+
packageName,
|
|
87
|
+
packageFolderName,
|
|
88
|
+
dependentName,
|
|
89
|
+
args: [args]
|
|
90
|
+
};
|
|
93
91
|
};
|
|
94
92
|
|
|
95
93
|
const run = (options) => devShared.Utils.autoCatch(async () => {
|
|
@@ -106,13 +104,12 @@ const run = (options) => devShared.Utils.autoCatch(async () => {
|
|
|
106
104
|
options.dryRun = process.env.NODE_ENV === "UNIT";
|
|
107
105
|
}
|
|
108
106
|
const { mode, dependentName, args, packageFolderName, packageName } = await getOptions();
|
|
109
|
-
|
|
110
|
-
if (options.dryRun)
|
|
111
|
-
return devShared.Shell.spawn(`echo "${command}"`);
|
|
107
|
+
const command = mode === "dependent" ? `npx pnpm add --filter ${packageName} ${dependentName} ${args.join(" ")}` : `npx pnpm link ./${workspace}/${packageFolderName}`;
|
|
108
|
+
if (options.dryRun) return devShared.Shell.spawn(`echo "${command}"`);
|
|
112
109
|
const spinner = ora(`${command}
|
|
113
110
|
`).start();
|
|
114
111
|
if (mode === "package") {
|
|
115
|
-
|
|
112
|
+
const dir = node_path.resolve(packageDir);
|
|
116
113
|
fs.outputFileSync(`${dir}/${packageFolderName}/README.md`, "// TODO");
|
|
117
114
|
fs.outputFileSync(`${dir}/${packageFolderName}/src/index.ts`, "// TODO");
|
|
118
115
|
fs.outputFileSync(`${dir}/${packageFolderName}/__tests__/index.spec.ts`, "// TODO");
|
package/dist/index.js
CHANGED
|
@@ -2,69 +2,69 @@ import { resolve } from 'node:path';
|
|
|
2
2
|
import { Locals, Utils, Logger, Shell } from '@deot/dev-shared';
|
|
3
3
|
import ora from 'ora';
|
|
4
4
|
import fs from 'fs-extra';
|
|
5
|
-
import
|
|
6
|
-
import autocomplete from 'inquirer-autocomplete-prompt';
|
|
5
|
+
import { select, Separator, search, input } from '@inquirer/prompts';
|
|
7
6
|
|
|
8
|
-
const { prompt, registerPrompt, Separator } = inquirer;
|
|
9
7
|
const getOptions = async () => {
|
|
10
8
|
const { packageFolderNames } = Locals.impl();
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"package"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
9
|
+
const mode = await select({
|
|
10
|
+
message: "Select Mode:",
|
|
11
|
+
choices: [
|
|
12
|
+
new Separator("选择添加的类型:"),
|
|
13
|
+
{
|
|
14
|
+
value: "dependent"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
value: "package"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
default: "package"
|
|
21
|
+
});
|
|
22
|
+
let packageName = "";
|
|
23
|
+
let packageFolderName = "";
|
|
24
|
+
let dependentName = "";
|
|
25
|
+
let args = "";
|
|
26
|
+
if (mode == "dependent") {
|
|
27
|
+
packageFolderName = await search({
|
|
25
28
|
message: "Select Package To Install:",
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
// suggestOnly: true, 开启后可以验证数据且需要使用tab选中
|
|
29
|
-
default: "index",
|
|
30
|
-
source: (_, input) => {
|
|
31
|
-
input = input || "";
|
|
29
|
+
source: (term) => {
|
|
30
|
+
const v = typeof term === "undefined" ? "index" : term;
|
|
32
31
|
return new Promise(($resolve) => {
|
|
33
|
-
|
|
32
|
+
const filter = v ? packageFolderNames.filter((item) => item.includes(v)) : packageFolderNames;
|
|
34
33
|
$resolve(filter);
|
|
35
34
|
});
|
|
36
35
|
}
|
|
37
|
-
}
|
|
38
|
-
{
|
|
39
|
-
type: "input",
|
|
40
|
-
name: "dependentName",
|
|
36
|
+
});
|
|
37
|
+
dependentName = await input({
|
|
41
38
|
message: "Input Dependent Name",
|
|
42
39
|
default: "",
|
|
43
|
-
when: (answers) => answers.mode === "dependent",
|
|
44
40
|
validate: (answer) => {
|
|
45
41
|
if (!answer) {
|
|
46
42
|
return "请输入需要添加的模块名";
|
|
47
43
|
}
|
|
48
44
|
return true;
|
|
49
45
|
}
|
|
50
|
-
}
|
|
51
|
-
{
|
|
52
|
-
|
|
53
|
-
name: "args",
|
|
54
|
-
when: (answers) => answers.mode === "dependent",
|
|
55
|
-
message: "Select Install Mode:",
|
|
46
|
+
});
|
|
47
|
+
args = await select({
|
|
48
|
+
message: "Select Mode:",
|
|
56
49
|
choices: [
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
50
|
+
{
|
|
51
|
+
value: "-S"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
value: "-D"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
value: "-O"
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
default: "package"
|
|
61
|
+
});
|
|
62
|
+
packageName = Locals.getPackageName(packageFolderName);
|
|
63
|
+
}
|
|
64
|
+
if (mode == "package") {
|
|
65
|
+
packageFolderName = await input({
|
|
65
66
|
message: "Input Package Name",
|
|
66
67
|
default: "",
|
|
67
|
-
when: (answers) => answers.mode === "package",
|
|
68
68
|
validate: (answer) => {
|
|
69
69
|
if (!answer) {
|
|
70
70
|
return "请输入需要添加的包名";
|
|
@@ -74,18 +74,16 @@ const getOptions = async () => {
|
|
|
74
74
|
}
|
|
75
75
|
return true;
|
|
76
76
|
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
registerPrompt("autocomplete", autocomplete);
|
|
80
|
-
let result = await prompt(question);
|
|
81
|
-
if (result.mode == "dependent") {
|
|
82
|
-
result.packageName = Locals.getPackageName(result.packageFolderName);
|
|
83
|
-
}
|
|
84
|
-
if (result.mode == "package") {
|
|
85
|
-
result.packageName = Locals.getPackageName(result.packageFolderName);
|
|
77
|
+
});
|
|
78
|
+
packageName = Locals.getPackageName(packageFolderName);
|
|
86
79
|
}
|
|
87
|
-
|
|
88
|
-
|
|
80
|
+
return {
|
|
81
|
+
mode,
|
|
82
|
+
packageName,
|
|
83
|
+
packageFolderName,
|
|
84
|
+
dependentName,
|
|
85
|
+
args: [args]
|
|
86
|
+
};
|
|
89
87
|
};
|
|
90
88
|
|
|
91
89
|
const run = (options) => Utils.autoCatch(async () => {
|
|
@@ -102,13 +100,12 @@ const run = (options) => Utils.autoCatch(async () => {
|
|
|
102
100
|
options.dryRun = process.env.NODE_ENV === "UNIT";
|
|
103
101
|
}
|
|
104
102
|
const { mode, dependentName, args, packageFolderName, packageName } = await getOptions();
|
|
105
|
-
|
|
106
|
-
if (options.dryRun)
|
|
107
|
-
return Shell.spawn(`echo "${command}"`);
|
|
103
|
+
const command = mode === "dependent" ? `npx pnpm add --filter ${packageName} ${dependentName} ${args.join(" ")}` : `npx pnpm link ./${workspace}/${packageFolderName}`;
|
|
104
|
+
if (options.dryRun) return Shell.spawn(`echo "${command}"`);
|
|
108
105
|
const spinner = ora(`${command}
|
|
109
106
|
`).start();
|
|
110
107
|
if (mode === "package") {
|
|
111
|
-
|
|
108
|
+
const dir = resolve(packageDir);
|
|
112
109
|
fs.outputFileSync(`${dir}/${packageFolderName}/README.md`, "// TODO");
|
|
113
110
|
fs.outputFileSync(`${dir}/${packageFolderName}/src/index.ts`, "// TODO");
|
|
114
111
|
fs.outputFileSync(`${dir}/${packageFolderName}/__tests__/index.spec.ts`, "// TODO");
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deot/dev-adder",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
9
10
|
"import": "./dist/index.js",
|
|
10
|
-
"require": "./dist/index.cjs"
|
|
11
|
-
"types": "./dist/index.d.ts"
|
|
11
|
+
"require": "./dist/index.cjs"
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"files": [
|
|
@@ -19,10 +19,9 @@
|
|
|
19
19
|
"access": "public"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"fs-extra": "^11.
|
|
23
|
-
"inquirer": "^
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"@deot/dev-shared": "^2.7.0"
|
|
22
|
+
"fs-extra": "^11.3.0",
|
|
23
|
+
"inquirer": "^12.4.1",
|
|
24
|
+
"ora": "^8.2.0",
|
|
25
|
+
"@deot/dev-shared": "^2.9.0"
|
|
27
26
|
}
|
|
28
27
|
}
|