@done-coding/cli-component 0.2.0-alpha.0 → 0.2.1
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/es/cli.mjs +1 -1
- package/es/{index-d6f53839.js → index-8e0a0575.js} +71 -72
- package/es/index.mjs +1 -1
- package/package.json +4 -4
- package/types/injectInfo.json.d.ts +1 -1
package/es/cli.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import r from "chalk";
|
|
3
3
|
import m from "node:path";
|
|
4
|
-
import
|
|
4
|
+
import u from "node:fs";
|
|
5
5
|
import I from "json5";
|
|
6
6
|
import E from "lodash.upperfirst";
|
|
7
7
|
import y from "lodash.camelcase";
|
|
@@ -13,17 +13,17 @@ import { OutputModeEnum as $, handler as C } from "@done-coding/cli-template";
|
|
|
13
13
|
import k from "yargs";
|
|
14
14
|
import { hideBin as T } from "yargs/helpers";
|
|
15
15
|
import D from "lodash.curry";
|
|
16
|
-
var
|
|
17
|
-
const _ = (e,
|
|
16
|
+
var i = /* @__PURE__ */ ((e) => (e.ADD = "add", e.REMOVE = "remove", e.LIST = "list", e))(i || {});
|
|
17
|
+
const _ = (e, n) => {
|
|
18
18
|
if (!/^[a-zA-Z]+[a-zA-Z0-9-]*$/.test(e))
|
|
19
19
|
return console.log(r.red("组件名只能包含字母、数字、中划线")), process.exit(1);
|
|
20
|
-
const { nameExcludes: t } =
|
|
20
|
+
const { nameExcludes: t } = n;
|
|
21
21
|
return t.includes(e) ? (console.log(
|
|
22
22
|
r.red(`组件名: ${e}是保留名称。
|
|
23
23
|
保留名称: ${t.join(",")}`)
|
|
24
24
|
), process.exit(1)) : !0;
|
|
25
25
|
}, f = {
|
|
26
|
-
version: "0.2.
|
|
26
|
+
version: "0.2.1",
|
|
27
27
|
name: "@done-coding/cli-component",
|
|
28
28
|
description: "组件命令行工具",
|
|
29
29
|
cliConfig: {
|
|
@@ -34,15 +34,15 @@ const _ = (e, o) => {
|
|
|
34
34
|
execDir: process.cwd(),
|
|
35
35
|
templateDir: w()
|
|
36
36
|
}), g = (e) => {
|
|
37
|
-
const { series:
|
|
37
|
+
const { series: n, name: t } = e, s = E(y(t)), c = L(s), a = x(s), l = n ? E(y(n)) : "", o = l ? `${l}${s}` : "", p = x(o);
|
|
38
38
|
return {
|
|
39
39
|
series: l,
|
|
40
40
|
name: s,
|
|
41
|
-
nameLowerFirst:
|
|
41
|
+
nameLowerFirst: c,
|
|
42
42
|
nameKebab: a,
|
|
43
|
-
fullName:
|
|
44
|
-
fullNameKebab:
|
|
45
|
-
cls:
|
|
43
|
+
fullName: o,
|
|
44
|
+
fullNameKebab: p,
|
|
45
|
+
cls: p
|
|
46
46
|
};
|
|
47
47
|
}, F = (e) => ({
|
|
48
48
|
$: "$",
|
|
@@ -50,103 +50,103 @@ const _ = (e, o) => {
|
|
|
50
50
|
...g(e)
|
|
51
51
|
}), h = () => {
|
|
52
52
|
const e = m.resolve(w(), "index.json");
|
|
53
|
-
if (!
|
|
53
|
+
if (!u.existsSync(e))
|
|
54
54
|
return console.log(r.red(`模块入口文件不存在: ${e}`)), process.exit(1);
|
|
55
|
-
const t = JSON.parse(
|
|
55
|
+
const t = JSON.parse(u.readFileSync(e, "utf-8")).config;
|
|
56
56
|
if (!t)
|
|
57
57
|
return console.log(r.red(`配置文件相对路径不存在: ${t}`)), process.exit(1);
|
|
58
58
|
const s = m.resolve(
|
|
59
59
|
m.dirname(e),
|
|
60
60
|
t
|
|
61
61
|
);
|
|
62
|
-
if (!
|
|
62
|
+
if (!u.existsSync(s))
|
|
63
63
|
return console.log(r.red(`配置文件不存在: ${s}`)), process.exit(1);
|
|
64
|
-
const
|
|
65
|
-
return
|
|
64
|
+
const c = I.parse(u.readFileSync(s, "utf-8")), a = M();
|
|
65
|
+
return c.componentDir = d(c.componentDir)(a), c;
|
|
66
66
|
}, v = (e) => {
|
|
67
|
-
const { componentDir:
|
|
68
|
-
return
|
|
69
|
-
const
|
|
70
|
-
return
|
|
67
|
+
const { componentDir: n, nameExcludes: t } = e;
|
|
68
|
+
return u.statSync(n).isDirectory() ? u.readdirSync(n).map((l) => {
|
|
69
|
+
const o = m.join(n, l);
|
|
70
|
+
return u.statSync(o).isDirectory() ? (console.log("filePath:", o, m.basename(o)), m.basename(o)) : "";
|
|
71
71
|
}).filter((l) => !(!l || t.includes(l))) : (console.log(r.red("组件源码路径不是目录")), process.exit(1));
|
|
72
72
|
}, K = async () => {
|
|
73
73
|
console.log(r.blue("展示列表"));
|
|
74
|
-
const e = h(),
|
|
74
|
+
const e = h(), n = v(e);
|
|
75
75
|
console.table(
|
|
76
|
-
|
|
77
|
-
const { name: s, fullName:
|
|
76
|
+
n.map((t) => {
|
|
77
|
+
const { name: s, fullName: c } = g({
|
|
78
78
|
...e,
|
|
79
79
|
name: t
|
|
80
80
|
});
|
|
81
81
|
return {
|
|
82
82
|
[r.green("名称")]: s,
|
|
83
|
-
[r.green("带系列名称")]:
|
|
83
|
+
[r.green("带系列名称")]: c,
|
|
84
84
|
[r.green("绝对路径")]: m.resolve(e.componentDir, t)
|
|
85
85
|
};
|
|
86
86
|
})
|
|
87
87
|
);
|
|
88
88
|
}, N = async ({
|
|
89
89
|
name: e,
|
|
90
|
-
config:
|
|
90
|
+
config: n,
|
|
91
91
|
command: t
|
|
92
92
|
}) => {
|
|
93
|
-
if (![
|
|
93
|
+
if (![i.ADD, i.REMOVE].includes(t))
|
|
94
94
|
return console.log(r.red(`不支持组件${t}操作`)), process.exit(1);
|
|
95
95
|
const s = F({
|
|
96
|
-
...
|
|
96
|
+
...n,
|
|
97
97
|
name: e
|
|
98
|
-
}),
|
|
99
|
-
for (const { entry: a, index: l } of
|
|
98
|
+
}), c = JSON.stringify(s);
|
|
99
|
+
for (const { entry: a, index: l } of n.list) {
|
|
100
100
|
if (a) {
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
const
|
|
101
|
+
const o = a;
|
|
102
|
+
o != null && o.input && (o.input = d(o.input)(s)), o != null && o.output && (o.output = d(o.output)(s));
|
|
103
|
+
const p = {
|
|
104
104
|
...a,
|
|
105
|
-
envData:
|
|
105
|
+
envData: c,
|
|
106
106
|
mode: $.APPEND,
|
|
107
|
-
rollback: t ===
|
|
107
|
+
rollback: t === i.REMOVE,
|
|
108
108
|
dealMarkdown: !0
|
|
109
109
|
};
|
|
110
|
-
await C(
|
|
110
|
+
await C(p);
|
|
111
111
|
}
|
|
112
112
|
if (l) {
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
const
|
|
113
|
+
const o = l;
|
|
114
|
+
o != null && o.input && (o.input = d(o.input)(s)), o != null && o.output && (o.output = d(o.output)(s));
|
|
115
|
+
const p = {
|
|
116
116
|
...l,
|
|
117
|
-
envData:
|
|
117
|
+
envData: c,
|
|
118
118
|
mode: $.OVERWRITE,
|
|
119
|
-
rollback: t ===
|
|
119
|
+
rollback: t === i.REMOVE,
|
|
120
120
|
dealMarkdown: !0
|
|
121
121
|
};
|
|
122
|
-
await C(
|
|
122
|
+
await C(p);
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
}, U = async ({ name: e }) => {
|
|
126
126
|
console.log(r.blue("添加组件"));
|
|
127
|
-
let
|
|
128
|
-
e ?
|
|
127
|
+
let n;
|
|
128
|
+
e ? n = e : n = (await S({
|
|
129
129
|
type: "text",
|
|
130
130
|
name: "name",
|
|
131
131
|
message: "请输入组件名"
|
|
132
132
|
})).name;
|
|
133
133
|
const t = h();
|
|
134
|
-
_(
|
|
135
|
-
const { series: s } = t,
|
|
136
|
-
for (let a of
|
|
134
|
+
_(n, t);
|
|
135
|
+
const { series: s } = t, c = await v(t);
|
|
136
|
+
for (let a of c)
|
|
137
137
|
if (g({
|
|
138
138
|
series: s,
|
|
139
|
-
name:
|
|
139
|
+
name: n
|
|
140
140
|
}).nameKebab === a)
|
|
141
|
-
return console.log(r.red(`组件${a}已存在, 不能再次创建${
|
|
141
|
+
return console.log(r.red(`组件${a}已存在, 不能再次创建${n}组件`)), process.exit(1);
|
|
142
142
|
return N({
|
|
143
|
-
name:
|
|
143
|
+
name: n,
|
|
144
144
|
config: t,
|
|
145
|
-
command:
|
|
145
|
+
command: i.ADD
|
|
146
146
|
});
|
|
147
147
|
}, z = async ({ name: e }) => {
|
|
148
148
|
console.log(r.blue("移除组件"));
|
|
149
|
-
const
|
|
149
|
+
const n = h(), t = await v(n);
|
|
150
150
|
if (t.length === 0)
|
|
151
151
|
return console.log(r.red("组件列表为空")), process.exit(1);
|
|
152
152
|
let s;
|
|
@@ -156,57 +156,56 @@ const _ = (e, o) => {
|
|
|
156
156
|
message: "请选择要移除的组件",
|
|
157
157
|
choices: t.map((a) => ({ title: a, value: a }))
|
|
158
158
|
})).name;
|
|
159
|
-
const { series:
|
|
159
|
+
const { series: c } = n;
|
|
160
160
|
for (let a of t)
|
|
161
161
|
if (g({
|
|
162
|
-
series:
|
|
162
|
+
series: c,
|
|
163
163
|
name: s
|
|
164
164
|
}).nameKebab === a) {
|
|
165
165
|
await N({
|
|
166
166
|
name: s,
|
|
167
|
-
config:
|
|
168
|
-
command:
|
|
169
|
-
}),
|
|
167
|
+
config: n,
|
|
168
|
+
command: i.REMOVE
|
|
169
|
+
}), u.rmdirSync(m.resolve(n.componentDir, a));
|
|
170
170
|
return;
|
|
171
171
|
}
|
|
172
172
|
return console.log(r.red(`组件${s}不存在`)), process.exit(1);
|
|
173
|
-
}, b = async (e,
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
console.log(e ? r.red(e) : r.red(o.message)), process.exit(1);
|
|
173
|
+
}, b = async (e, n) => (console.log("com", n), e === i.ADD ? U(n) : e === i.REMOVE ? z(n) : e === i.LIST ? K() : (console.log(r.red(`无效的命令: ${e}`)), process.exit(1))), R = async (e) => {
|
|
174
|
+
}, P = f.cliConfig.moduleName, H = (e, n) => {
|
|
175
|
+
console.log(e ? r.red(e) : r.red(n.message)), process.exit(1);
|
|
177
176
|
}, J = f.description, Z = `Usage: $0 ${P} <command> [options]`, B = "Usage: $0 <command> [options]", O = (e) => e.command({
|
|
178
|
-
command: `${
|
|
177
|
+
command: `${i.ADD} <name>`,
|
|
179
178
|
describe: "新增一个组件",
|
|
180
|
-
builder: (
|
|
179
|
+
builder: (n) => n.positional("name", {
|
|
181
180
|
describe: "组件名称",
|
|
182
181
|
type: "string"
|
|
183
182
|
}),
|
|
184
|
-
handler: D(b)(
|
|
183
|
+
handler: D(b)(i.ADD)
|
|
185
184
|
}).command({
|
|
186
|
-
command: `${
|
|
185
|
+
command: `${i.REMOVE} [name]`,
|
|
187
186
|
describe: "删除一个组件",
|
|
188
|
-
builder: (
|
|
187
|
+
builder: (n) => n.positional("name", {
|
|
189
188
|
describe: "组件名称",
|
|
190
189
|
type: "string"
|
|
191
190
|
}),
|
|
192
|
-
handler: D(b)(
|
|
191
|
+
handler: D(b)(i.REMOVE)
|
|
193
192
|
}).command({
|
|
194
|
-
command:
|
|
193
|
+
command: i.LIST,
|
|
195
194
|
describe: "展示组件列表",
|
|
196
|
-
handler: D(b)(
|
|
197
|
-
}).demandCommand(1), V = (e,
|
|
195
|
+
handler: D(b)(i.LIST)
|
|
196
|
+
}).demandCommand(1), V = (e, n = !1) => n ? O(e.strict().usage(Z)) : O(
|
|
198
197
|
e.strict().usage(B).help("help").version(f.version).alias("v", "version").alias("h", "help")
|
|
199
198
|
).fail(H).argv, W = (e) => V(e, !0), me = {
|
|
200
199
|
command: P,
|
|
201
200
|
describe: J,
|
|
202
201
|
builder: W,
|
|
203
202
|
handler: R
|
|
204
|
-
},
|
|
205
|
-
const e = k(T(process.argv))
|
|
206
|
-
return R(
|
|
203
|
+
}, ue = async () => {
|
|
204
|
+
const e = k(T(process.argv));
|
|
205
|
+
return await V(e), R();
|
|
207
206
|
};
|
|
208
207
|
export {
|
|
209
208
|
me as a,
|
|
210
|
-
|
|
209
|
+
ue as c,
|
|
211
210
|
R as h
|
|
212
211
|
};
|
package/es/index.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@done-coding/cli-component",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "组件命令行工具",
|
|
5
5
|
"private": false,
|
|
6
6
|
"module": "es/index.mjs",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"license": "MIT",
|
|
42
42
|
"sideEffects": false,
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@done-coding/cli-inject": "^0.4.
|
|
44
|
+
"@done-coding/cli-inject": "^0.4.5",
|
|
45
45
|
"@types/json5": "^2.2.0",
|
|
46
46
|
"@types/lodash.camelcase": "^4.3.8",
|
|
47
47
|
"@types/lodash.curry": "^4.1.8",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"node": ">=18.0.0"
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"@done-coding/cli-template": "^0.5.
|
|
65
|
+
"@done-coding/cli-template": "^0.5.1",
|
|
66
66
|
"chalk": "^5.3.0",
|
|
67
67
|
"json5": "^2.2.3",
|
|
68
68
|
"lodash.camelcase": "^4.3.0",
|
|
@@ -75,5 +75,5 @@
|
|
|
75
75
|
"prompts": "^2.4.2",
|
|
76
76
|
"yargs": "^17.7.2"
|
|
77
77
|
},
|
|
78
|
-
"gitHead": "
|
|
78
|
+
"gitHead": "465ac238437ab8bd3803c5e6fe8ac5a30bc445f3"
|
|
79
79
|
}
|