@deot/dev-adder 1.1.1 → 2.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/dist/index.cjs.js +133 -140
- package/dist/index.es.js +125 -134
- package/package.json +4 -4
package/dist/index.cjs.js
CHANGED
|
@@ -1,153 +1,146 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
|
|
5
|
+
const devShared = require('@deot/dev-shared');
|
|
6
|
+
const node_path = require('node:path');
|
|
7
|
+
const ora = require('ora');
|
|
8
|
+
const fs = require('fs-extra');
|
|
9
|
+
const inquirer = require('inquirer');
|
|
10
|
+
const autocomplete = require('inquirer-autocomplete-prompt');
|
|
9
11
|
|
|
10
12
|
const { prompt, registerPrompt, Separator } = inquirer;
|
|
11
13
|
const getOptions = async () => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return '请输入需要添加的模块名';
|
|
50
|
-
}
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
type: 'list',
|
|
56
|
-
name: 'args',
|
|
57
|
-
when: (answers) => answers.mode === 'dependent',
|
|
58
|
-
message: 'Select Install Mode:',
|
|
59
|
-
choices: [
|
|
60
|
-
'-S',
|
|
61
|
-
'-D',
|
|
62
|
-
'-O'
|
|
63
|
-
]
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
type: 'input',
|
|
67
|
-
name: 'packageFolderName',
|
|
68
|
-
message: 'Input Package Name',
|
|
69
|
-
default: '',
|
|
70
|
-
when: (answers) => answers.mode === 'package',
|
|
71
|
-
validate: (answer) => {
|
|
72
|
-
if (!answer) {
|
|
73
|
-
return '请输入需要添加的包名';
|
|
74
|
-
}
|
|
75
|
-
if (packageFolderNames.includes(answer) || answer === 'dev') {
|
|
76
|
-
return '包名已存在';
|
|
77
|
-
}
|
|
78
|
-
return true;
|
|
79
|
-
}
|
|
14
|
+
const { packageFolderNames } = devShared.Locals.impl();
|
|
15
|
+
const question = [
|
|
16
|
+
{
|
|
17
|
+
type: "list",
|
|
18
|
+
name: "mode",
|
|
19
|
+
message: "Select Mode:",
|
|
20
|
+
choices: [
|
|
21
|
+
new Separator("选择添加的类型:"),
|
|
22
|
+
"dependent",
|
|
23
|
+
"package"
|
|
24
|
+
],
|
|
25
|
+
default: "package"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
type: "autocomplete",
|
|
29
|
+
message: "Select Package To Install:",
|
|
30
|
+
when: (answers) => answers.mode === "dependent",
|
|
31
|
+
name: "packageFolderName",
|
|
32
|
+
// suggestOnly: true, 开启后可以验证数据且需要使用tab选中
|
|
33
|
+
default: "index",
|
|
34
|
+
source: (_, input) => {
|
|
35
|
+
input = input || "";
|
|
36
|
+
return new Promise(($resolve) => {
|
|
37
|
+
let filter = input ? packageFolderNames.filter((item) => item.includes(input)) : packageFolderNames;
|
|
38
|
+
$resolve(filter);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
type: "input",
|
|
44
|
+
name: "dependentName",
|
|
45
|
+
message: "Input Dependent Name",
|
|
46
|
+
default: "",
|
|
47
|
+
when: (answers) => answers.mode === "dependent",
|
|
48
|
+
validate: (answer) => {
|
|
49
|
+
if (!answer) {
|
|
50
|
+
return "请输入需要添加的模块名";
|
|
80
51
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
type: "list",
|
|
57
|
+
name: "args",
|
|
58
|
+
when: (answers) => answers.mode === "dependent",
|
|
59
|
+
message: "Select Install Mode:",
|
|
60
|
+
choices: [
|
|
61
|
+
"-S",
|
|
62
|
+
"-D",
|
|
63
|
+
"-O"
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
type: "input",
|
|
68
|
+
name: "packageFolderName",
|
|
69
|
+
message: "Input Package Name",
|
|
70
|
+
default: "",
|
|
71
|
+
when: (answers) => answers.mode === "package",
|
|
72
|
+
validate: (answer) => {
|
|
73
|
+
if (!answer) {
|
|
74
|
+
return "请输入需要添加的包名";
|
|
75
|
+
}
|
|
76
|
+
if (packageFolderNames.includes(answer) || answer === "dev") {
|
|
77
|
+
return "包名已存在";
|
|
78
|
+
}
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
89
81
|
}
|
|
90
|
-
|
|
91
|
-
|
|
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);
|
|
90
|
+
}
|
|
91
|
+
result.args = [result.args];
|
|
92
|
+
return result;
|
|
92
93
|
};
|
|
93
94
|
|
|
94
95
|
const run = (options) => devShared.Utils.autoCatch(async () => {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
mainEntryPointFilePath: `./dist/${workspace}/${packageFolderName}/src/index.d.ts`,
|
|
144
|
-
dtsRollup: {
|
|
145
|
-
publicTrimmedFilePath: "./dist/index.d.ts"
|
|
146
|
-
}
|
|
147
|
-
}, null, 2));
|
|
148
|
-
}
|
|
149
|
-
await devShared.Shell.spawn(command);
|
|
150
|
-
spinner.stop();
|
|
96
|
+
options = {
|
|
97
|
+
dryRun: false,
|
|
98
|
+
...options
|
|
99
|
+
};
|
|
100
|
+
const locals = devShared.Locals.impl();
|
|
101
|
+
const { workspace, packageDir } = locals;
|
|
102
|
+
if (!workspace) {
|
|
103
|
+
return devShared.Logger.log(`<add> Monorepo Supported Only.`);
|
|
104
|
+
}
|
|
105
|
+
if (typeof options.dryRun === "undefined") {
|
|
106
|
+
options.dryRun = process.env.NODE_ENV === "UNIT";
|
|
107
|
+
}
|
|
108
|
+
const { mode, dependentName, args, packageFolderName, packageName } = await getOptions();
|
|
109
|
+
let command = mode === "dependent" ? `npx pnpm add --filter ${packageName} ${dependentName} ${args.join(" ")}` : `npx pnpm link ./${workspace}/${packageFolderName}`;
|
|
110
|
+
if (options.dryRun)
|
|
111
|
+
return devShared.Shell.spawn(`echo "${command}"`);
|
|
112
|
+
const spinner = ora(`${command}
|
|
113
|
+
`).start();
|
|
114
|
+
if (mode === "package") {
|
|
115
|
+
let dir = node_path.resolve(packageDir);
|
|
116
|
+
fs.outputFileSync(`${dir}/${packageFolderName}/README.md`, "// TODO");
|
|
117
|
+
fs.outputFileSync(`${dir}/${packageFolderName}/src/index.ts`, "// TODO");
|
|
118
|
+
fs.outputFileSync(`${dir}/${packageFolderName}/__tests__/index.spec.ts`, "// TODO");
|
|
119
|
+
fs.outputFileSync(`${dir}/${packageFolderName}/package.json`, JSON.stringify({
|
|
120
|
+
name: packageName,
|
|
121
|
+
version: "1.0.0",
|
|
122
|
+
main: "dist/index.cjs.js",
|
|
123
|
+
module: "dist/index.es.js",
|
|
124
|
+
types: "dist/index.d.ts",
|
|
125
|
+
exports: {
|
|
126
|
+
".": {
|
|
127
|
+
import: "./dist/index.es.js",
|
|
128
|
+
require: "./dist/index.cjs.js",
|
|
129
|
+
types: "./dist/index.d.ts"
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
files: [
|
|
133
|
+
"dist"
|
|
134
|
+
],
|
|
135
|
+
license: "MIT",
|
|
136
|
+
publishConfig: {
|
|
137
|
+
access: "public"
|
|
138
|
+
},
|
|
139
|
+
dependencies: {}
|
|
140
|
+
}, null, 2));
|
|
141
|
+
}
|
|
142
|
+
await devShared.Shell.spawn(command);
|
|
143
|
+
spinner.stop();
|
|
151
144
|
});
|
|
152
145
|
|
|
153
146
|
exports.run = run;
|
package/dist/index.es.js
CHANGED
|
@@ -7,145 +7,136 @@ import autocomplete from 'inquirer-autocomplete-prompt';
|
|
|
7
7
|
|
|
8
8
|
const { prompt, registerPrompt, Separator } = inquirer;
|
|
9
9
|
const getOptions = async () => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return '请输入需要添加的模块名';
|
|
48
|
-
}
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
type: 'list',
|
|
54
|
-
name: 'args',
|
|
55
|
-
when: (answers) => answers.mode === 'dependent',
|
|
56
|
-
message: 'Select Install Mode:',
|
|
57
|
-
choices: [
|
|
58
|
-
'-S',
|
|
59
|
-
'-D',
|
|
60
|
-
'-O'
|
|
61
|
-
]
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
type: 'input',
|
|
65
|
-
name: 'packageFolderName',
|
|
66
|
-
message: 'Input Package Name',
|
|
67
|
-
default: '',
|
|
68
|
-
when: (answers) => answers.mode === 'package',
|
|
69
|
-
validate: (answer) => {
|
|
70
|
-
if (!answer) {
|
|
71
|
-
return '请输入需要添加的包名';
|
|
72
|
-
}
|
|
73
|
-
if (packageFolderNames.includes(answer) || answer === 'dev') {
|
|
74
|
-
return '包名已存在';
|
|
75
|
-
}
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
10
|
+
const { packageFolderNames } = Locals.impl();
|
|
11
|
+
const question = [
|
|
12
|
+
{
|
|
13
|
+
type: "list",
|
|
14
|
+
name: "mode",
|
|
15
|
+
message: "Select Mode:",
|
|
16
|
+
choices: [
|
|
17
|
+
new Separator("选择添加的类型:"),
|
|
18
|
+
"dependent",
|
|
19
|
+
"package"
|
|
20
|
+
],
|
|
21
|
+
default: "package"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
type: "autocomplete",
|
|
25
|
+
message: "Select Package To Install:",
|
|
26
|
+
when: (answers) => answers.mode === "dependent",
|
|
27
|
+
name: "packageFolderName",
|
|
28
|
+
// suggestOnly: true, 开启后可以验证数据且需要使用tab选中
|
|
29
|
+
default: "index",
|
|
30
|
+
source: (_, input) => {
|
|
31
|
+
input = input || "";
|
|
32
|
+
return new Promise(($resolve) => {
|
|
33
|
+
let filter = input ? packageFolderNames.filter((item) => item.includes(input)) : packageFolderNames;
|
|
34
|
+
$resolve(filter);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
type: "input",
|
|
40
|
+
name: "dependentName",
|
|
41
|
+
message: "Input Dependent Name",
|
|
42
|
+
default: "",
|
|
43
|
+
when: (answers) => answers.mode === "dependent",
|
|
44
|
+
validate: (answer) => {
|
|
45
|
+
if (!answer) {
|
|
46
|
+
return "请输入需要添加的模块名";
|
|
78
47
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
type: "list",
|
|
53
|
+
name: "args",
|
|
54
|
+
when: (answers) => answers.mode === "dependent",
|
|
55
|
+
message: "Select Install Mode:",
|
|
56
|
+
choices: [
|
|
57
|
+
"-S",
|
|
58
|
+
"-D",
|
|
59
|
+
"-O"
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
type: "input",
|
|
64
|
+
name: "packageFolderName",
|
|
65
|
+
message: "Input Package Name",
|
|
66
|
+
default: "",
|
|
67
|
+
when: (answers) => answers.mode === "package",
|
|
68
|
+
validate: (answer) => {
|
|
69
|
+
if (!answer) {
|
|
70
|
+
return "请输入需要添加的包名";
|
|
71
|
+
}
|
|
72
|
+
if (packageFolderNames.includes(answer) || answer === "dev") {
|
|
73
|
+
return "包名已存在";
|
|
74
|
+
}
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
87
77
|
}
|
|
88
|
-
|
|
89
|
-
|
|
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);
|
|
86
|
+
}
|
|
87
|
+
result.args = [result.args];
|
|
88
|
+
return result;
|
|
90
89
|
};
|
|
91
90
|
|
|
92
91
|
const run = (options) => Utils.autoCatch(async () => {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
mainEntryPointFilePath: `./dist/${workspace}/${packageFolderName}/src/index.d.ts`,
|
|
142
|
-
dtsRollup: {
|
|
143
|
-
publicTrimmedFilePath: "./dist/index.d.ts"
|
|
144
|
-
}
|
|
145
|
-
}, null, 2));
|
|
146
|
-
}
|
|
147
|
-
await Shell.spawn(command);
|
|
148
|
-
spinner.stop();
|
|
92
|
+
options = {
|
|
93
|
+
dryRun: false,
|
|
94
|
+
...options
|
|
95
|
+
};
|
|
96
|
+
const locals = Locals.impl();
|
|
97
|
+
const { workspace, packageDir } = locals;
|
|
98
|
+
if (!workspace) {
|
|
99
|
+
return Logger.log(`<add> Monorepo Supported Only.`);
|
|
100
|
+
}
|
|
101
|
+
if (typeof options.dryRun === "undefined") {
|
|
102
|
+
options.dryRun = process.env.NODE_ENV === "UNIT";
|
|
103
|
+
}
|
|
104
|
+
const { mode, dependentName, args, packageFolderName, packageName } = await getOptions();
|
|
105
|
+
let command = mode === "dependent" ? `npx pnpm add --filter ${packageName} ${dependentName} ${args.join(" ")}` : `npx pnpm link ./${workspace}/${packageFolderName}`;
|
|
106
|
+
if (options.dryRun)
|
|
107
|
+
return Shell.spawn(`echo "${command}"`);
|
|
108
|
+
const spinner = ora(`${command}
|
|
109
|
+
`).start();
|
|
110
|
+
if (mode === "package") {
|
|
111
|
+
let dir = resolve(packageDir);
|
|
112
|
+
fs.outputFileSync(`${dir}/${packageFolderName}/README.md`, "// TODO");
|
|
113
|
+
fs.outputFileSync(`${dir}/${packageFolderName}/src/index.ts`, "// TODO");
|
|
114
|
+
fs.outputFileSync(`${dir}/${packageFolderName}/__tests__/index.spec.ts`, "// TODO");
|
|
115
|
+
fs.outputFileSync(`${dir}/${packageFolderName}/package.json`, JSON.stringify({
|
|
116
|
+
name: packageName,
|
|
117
|
+
version: "1.0.0",
|
|
118
|
+
main: "dist/index.cjs.js",
|
|
119
|
+
module: "dist/index.es.js",
|
|
120
|
+
types: "dist/index.d.ts",
|
|
121
|
+
exports: {
|
|
122
|
+
".": {
|
|
123
|
+
import: "./dist/index.es.js",
|
|
124
|
+
require: "./dist/index.cjs.js",
|
|
125
|
+
types: "./dist/index.d.ts"
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
files: [
|
|
129
|
+
"dist"
|
|
130
|
+
],
|
|
131
|
+
license: "MIT",
|
|
132
|
+
publishConfig: {
|
|
133
|
+
access: "public"
|
|
134
|
+
},
|
|
135
|
+
dependencies: {}
|
|
136
|
+
}, null, 2));
|
|
137
|
+
}
|
|
138
|
+
await Shell.spawn(command);
|
|
139
|
+
spinner.stop();
|
|
149
140
|
});
|
|
150
141
|
|
|
151
142
|
export { run };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deot/dev-adder",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"main": "dist/index.es.js",
|
|
5
5
|
"module": "dist/index.es.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"fs-extra": "^11.1.1",
|
|
17
|
-
"inquirer": "^9.
|
|
17
|
+
"inquirer": "^9.2.7",
|
|
18
18
|
"inquirer-autocomplete-prompt": "^3.0.0",
|
|
19
|
-
"ora": "^6.1
|
|
20
|
-
"@deot/dev-shared": "^
|
|
19
|
+
"ora": "^6.3.1",
|
|
20
|
+
"@deot/dev-shared": "^2.1.0"
|
|
21
21
|
}
|
|
22
22
|
}
|