@agile-team/robot-cli 1.1.12 → 2.2.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 +77 -0
- package/README.md +355 -438
- package/bin/robot.js +3 -0
- package/dist/index.js +1747 -0
- package/package.json +26 -30
- package/bin/index.js +0 -405
- package/lib/create.js +0 -1201
- package/lib/download.js +0 -205
- package/lib/templates.js +0 -353
- package/lib/utils.js +0 -334
package/README.md
CHANGED
|
@@ -1,439 +1,356 @@
|
|
|
1
|
-
# 🤖 Robot CLI
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
|
57
|
-
|
|
58
|
-
|
|
|
59
|
-
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
robot
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
robot
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
robot
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
robot-
|
|
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
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
#
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
```bash
|
|
172
|
-
#
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
```bash
|
|
243
|
-
#
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
#
|
|
247
|
-
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
```
|
|
273
|
-
//
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
### 维护指南
|
|
357
|
-
|
|
358
|
-
#### 版本管理策略
|
|
359
|
-
```bash
|
|
360
|
-
# 语义化版本
|
|
361
|
-
major.minor.patch
|
|
362
|
-
|
|
363
|
-
# 发布流程
|
|
364
|
-
npm run test
|
|
365
|
-
npm run build
|
|
366
|
-
npm version patch
|
|
367
|
-
npm publish
|
|
368
|
-
git push --tags
|
|
369
|
-
```
|
|
370
|
-
|
|
371
|
-
#### 模板同步
|
|
372
|
-
```bash
|
|
373
|
-
# 定期同步模板仓库
|
|
374
|
-
npm run sync-templates
|
|
375
|
-
|
|
376
|
-
# 检查模板有效性
|
|
377
|
-
npm run validate-templates
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
#### 监控和分析
|
|
381
|
-
```javascript
|
|
382
|
-
// 添加使用统计
|
|
383
|
-
import analytics from './lib/analytics.js';
|
|
384
|
-
|
|
385
|
-
analytics.track('template_used', {
|
|
386
|
-
template: template.key,
|
|
387
|
-
version: packageJson.version
|
|
388
|
-
});
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
## 🔧 常见问题
|
|
392
|
-
|
|
393
|
-
**Q: 提示 "command not found"?**
|
|
394
|
-
A: 全局安装CLI:`npm install -g @agile-team/robot-cli`
|
|
395
|
-
|
|
396
|
-
**Q: 模板下载失败?**
|
|
397
|
-
A: 检查网络连接,确保能访问GitHub
|
|
398
|
-
|
|
399
|
-
**Q: 如何添加自定义模板?**
|
|
400
|
-
A: 创建模板仓库 → 添加配置 → 测试功能
|
|
401
|
-
|
|
402
|
-
**Q: 支持私有仓库吗?**
|
|
403
|
-
A: 目前仅支持公开GitHub仓库
|
|
404
|
-
|
|
405
|
-
**Q: 为什么不使用缓存?**
|
|
406
|
-
A: 为了确保总是获得最新版本的模板,避免缓存相关的问题
|
|
407
|
-
|
|
408
|
-
## 🎉 快速体验
|
|
409
|
-
|
|
410
|
-
```bash
|
|
411
|
-
# 安装并创建项目
|
|
412
|
-
npm install -g @agile-team/robot-cli
|
|
413
|
-
robot create my-awesome-project
|
|
414
|
-
|
|
415
|
-
# 启动开发服务器
|
|
416
|
-
cd my-awesome-project && bun install && bun run dev
|
|
417
|
-
```
|
|
418
|
-
|
|
419
|
-
## 🤝 贡献
|
|
420
|
-
|
|
421
|
-
欢迎提交 Issues 和 Pull Requests!
|
|
422
|
-
|
|
423
|
-
## 📜 许可证
|
|
424
|
-
|
|
425
|
-
MIT License
|
|
426
|
-
|
|
427
|
-
## 🔗 相关链接
|
|
428
|
-
|
|
429
|
-
- [GitHub仓库](https://github.com/ChenyCHENYU/robot-cli)
|
|
430
|
-
- [npm包](https://www.npmjs.com/package/@agile-team/robot-cli)
|
|
431
|
-
- [问题反馈](https://github.com/ChenyCHENYU/robot-cli/issues)
|
|
432
|
-
|
|
433
|
-
---
|
|
434
|
-
|
|
435
|
-
**让项目创建变得简单高效,专注于业务逻辑的实现!** 🚀
|
|
436
|
-
|
|
437
|
-
```bash
|
|
438
|
-
npx @agile-team/robot-cli create my-project
|
|
1
|
+
# 🤖 Robot CLI
|
|
2
|
+
|
|
3
|
+
> **现代化工程脚手架** — 一条命令,60 秒搭建标准化项目
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@agile-team/robot-cli)
|
|
6
|
+
[](https://nodejs.org)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 目录
|
|
12
|
+
|
|
13
|
+
- [快速开始](#-快速开始)
|
|
14
|
+
- [模板一览](#-模板一览)
|
|
15
|
+
- [命令详解](#-命令详解)
|
|
16
|
+
- [进阶用法](#-进阶用法)
|
|
17
|
+
- [项目结构](#-项目结构)
|
|
18
|
+
- [二次开发指南](#-二次开发指南)
|
|
19
|
+
- [常见问题](#-常见问题)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 🚀 快速开始
|
|
24
|
+
|
|
25
|
+
### 安装
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# 推荐 bun(极速)
|
|
29
|
+
bun add -g @agile-team/robot-cli
|
|
30
|
+
|
|
31
|
+
# 或 npm
|
|
32
|
+
npm install -g @agile-team/robot-cli
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 30 秒上手
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# 交互式创建(推荐,会引导你选模板、填信息)
|
|
39
|
+
robot create
|
|
40
|
+
|
|
41
|
+
# 直接指定模板 + 项目名
|
|
42
|
+
robot create my-project -t robot-admin
|
|
43
|
+
|
|
44
|
+
# 零安装体验
|
|
45
|
+
bunx @agile-team/robot-cli create my-project
|
|
46
|
+
# 或
|
|
47
|
+
npx @agile-team/robot-cli create my-project
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 📋 模板一览
|
|
53
|
+
|
|
54
|
+
### 🎨 前端项目(Vue.js)
|
|
55
|
+
|
|
56
|
+
| 模板 Key | 名称 | 架构模式 | 说明 |
|
|
57
|
+
|---------|------|---------|------|
|
|
58
|
+
| `robot-admin` | Robot Admin 完整版 | 单体应用 | 50+ 完整示例、权限管理、图表组件、Naive UI |
|
|
59
|
+
| `robot-admin-base` | Robot Admin 精简版 | 单体应用 | 基础架构、核心功能、快速启动 |
|
|
60
|
+
| `robot-monorepo` | Robot Monorepo | Monorepo | bun workspace 多包管理架构 |
|
|
61
|
+
| `robot-micro-app` | Robot MicroApp | 微前端 | 基于 MicroApp 的微前端方案 |
|
|
62
|
+
| `robot-module-federation` | Robot Module Federation | 模块联邦 | 基于 Vite Module Federation |
|
|
63
|
+
|
|
64
|
+
> **前端模板源码仓库**:[ChenyCHENYU/Robot_Admin](https://github.com/ChenyCHENYU/Robot_Admin)
|
|
65
|
+
> 不同架构通过分支区分:`main`(全量)、`monorepo`、`micro-app`、`module-federation`
|
|
66
|
+
|
|
67
|
+
### 🎨 前端项目(React.js)
|
|
68
|
+
|
|
69
|
+
| 模板 Key | 名称 | 说明 |
|
|
70
|
+
|---------|------|------|
|
|
71
|
+
| `robot-react` | Robot React 完整版 | Ant Design + 完整功能演示 |
|
|
72
|
+
| `robot-react-base` | Robot React 精简版 | 基础 React + 核心功能 |
|
|
73
|
+
|
|
74
|
+
### 📱 移动端项目
|
|
75
|
+
|
|
76
|
+
| 模板 Key | 名称 | 说明 |
|
|
77
|
+
|---------|------|------|
|
|
78
|
+
| `robot-uniapp` | Robot uni-app 完整版 | 多端适配(小程序/H5/App)+ 完整示例 |
|
|
79
|
+
| `robot-uniapp-base` | Robot uni-app 精简版 | 基础框架 + 核心功能 |
|
|
80
|
+
|
|
81
|
+
### 🚀 后端项目
|
|
82
|
+
|
|
83
|
+
| 模板 Key | 名称 | 说明 |
|
|
84
|
+
|---------|------|------|
|
|
85
|
+
| `robot-nest` | Robot NestJS 完整版 | TypeORM + JWT + Swagger + Redis |
|
|
86
|
+
| `robot-nest-base` | Robot NestJS 精简版 | 基础 NestJS + 核心模块 |
|
|
87
|
+
| `robot-nest-micro` | Robot NestJS 微服务 | gRPC + 服务发现 |
|
|
88
|
+
|
|
89
|
+
### 💻 桌面端项目
|
|
90
|
+
|
|
91
|
+
| 模板 Key | 名称 | 说明 |
|
|
92
|
+
|---------|------|------|
|
|
93
|
+
| `robot-electron` | Robot Electron 完整版 | Vue3 + Electron + 自动更新 |
|
|
94
|
+
| `robot-electron-base` | Robot Electron 精简版 | 基础 Electron + Vue 框架 |
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 📖 命令详解
|
|
99
|
+
|
|
100
|
+
### `robot create [project-name]` — 创建项目
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# 交互式(最常用)
|
|
104
|
+
robot create
|
|
105
|
+
|
|
106
|
+
# 指定项目名 + 模板
|
|
107
|
+
robot create my-app -t robot-admin
|
|
108
|
+
|
|
109
|
+
# 从自定义 Git 仓库创建
|
|
110
|
+
robot create my-app --from https://github.com/your-org/your-template
|
|
111
|
+
|
|
112
|
+
# 预览模式(不实际创建,只展示将要执行的操作)
|
|
113
|
+
robot create my-app -t robot-admin --dry-run
|
|
114
|
+
|
|
115
|
+
# 跳过依赖安装
|
|
116
|
+
robot create my-app -t robot-admin --skip-install
|
|
117
|
+
|
|
118
|
+
# 强制不使用缓存
|
|
119
|
+
robot create my-app -t robot-admin --no-cache
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
| 参数 | 说明 |
|
|
123
|
+
|------|------|
|
|
124
|
+
| `-t, --template <name>` | 指定模板 key(见上方模板一览) |
|
|
125
|
+
| `--from <url>` | 从任意 Git 仓库 URL 创建 |
|
|
126
|
+
| `--dry-run` | 预览模式,不实际执行 |
|
|
127
|
+
| `--skip-install` | 跳过依赖安装 |
|
|
128
|
+
| `--no-cache` | 不使用本地缓存 |
|
|
129
|
+
|
|
130
|
+
### `robot list` — 查看模板列表
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
robot list # 所有模板
|
|
134
|
+
robot list -r # 只看推荐模板
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### `robot search <keyword>` — 搜索模板
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
robot search vue # 搜 Vue 相关
|
|
141
|
+
robot search 微前端 # 搜关键词
|
|
142
|
+
robot search admin # 搜后台管理
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### `robot doctor` — 环境诊断
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
robot doctor # 检查 Node、Git、包管理器、网络
|
|
149
|
+
robot doctor --clear-cache # 清理模板缓存
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 🔧 进阶用法
|
|
155
|
+
|
|
156
|
+
### 包管理器优先级
|
|
157
|
+
|
|
158
|
+
创建项目时会自动检测已安装的包管理器,推荐顺序:
|
|
159
|
+
|
|
160
|
+
| 优先级 | 包管理器 | 说明 |
|
|
161
|
+
|--------|---------|------|
|
|
162
|
+
| 🥇 | **bun** | 极速安装,现代化 |
|
|
163
|
+
| 🥈 | **pnpm** | 快速安装,节省磁盘 |
|
|
164
|
+
| 🥉 | **yarn** | 兼容性好 |
|
|
165
|
+
| 4️⃣ | **npm** | Node.js 内置 |
|
|
166
|
+
|
|
167
|
+
### 离线缓存
|
|
168
|
+
|
|
169
|
+
首次下载的模板会自动缓存到 `~/.robot-cli/cache/`。当网络不可用时自动回退到缓存版本。
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# 查看缓存状态
|
|
173
|
+
robot doctor
|
|
174
|
+
|
|
175
|
+
# 清理缓存
|
|
176
|
+
robot doctor --clear-cache
|
|
177
|
+
|
|
178
|
+
# 单次跳过缓存(强制下载最新)
|
|
179
|
+
robot create my-app -t robot-admin --no-cache
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### 从自定义 Git 仓库创建
|
|
183
|
+
|
|
184
|
+
不限于内置模板,可以从任意公开 Git 仓库创建:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
robot create my-app --from https://github.com/your-org/your-template
|
|
188
|
+
robot create my-app --from https://gitee.com/your-org/your-template
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 🗂 项目结构
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
robot-cli/
|
|
197
|
+
├── bin/robot.js # CLI 入口(thin shim)
|
|
198
|
+
├── src/ # TypeScript 源码
|
|
199
|
+
│ ├── config/ # 配置层(模板定义 & CLI 配置)
|
|
200
|
+
│ │ ├── index.ts # 配置统一导出
|
|
201
|
+
│ │ ├── templates.config.ts # 模板注册表
|
|
202
|
+
│ │ └── cli.config.ts # CLI 品牌 & 运行时配置
|
|
203
|
+
│ ├── index.ts # 主入口 & Commander 命令注册
|
|
204
|
+
│ ├── create.ts # 交互式创建流程
|
|
205
|
+
│ ├── download.ts # 模板下载 & 缓存管理
|
|
206
|
+
│ ├── templates.ts # 模板查询 & 远程注册
|
|
207
|
+
│ ├── doctor.ts # 环境诊断
|
|
208
|
+
│ ├── utils.ts # 工具函数
|
|
209
|
+
│ └── types.ts # 类型定义
|
|
210
|
+
├── tests/ # Vitest 单元测试
|
|
211
|
+
│ ├── validate.test.ts
|
|
212
|
+
│ ├── templates.test.ts
|
|
213
|
+
│ └── download.test.ts
|
|
214
|
+
├── dist/ # tsup 构建输出(ESM)
|
|
215
|
+
├── tsconfig.json
|
|
216
|
+
├── tsup.config.ts
|
|
217
|
+
├── vitest.config.ts
|
|
218
|
+
├── .github/workflows/ # CI/CD
|
|
219
|
+
│ ├── ci.yml # PR → lint + typecheck + build + test
|
|
220
|
+
│ └── release.yml # tag → publish npm
|
|
221
|
+
├── package.json
|
|
222
|
+
├── CHANGELOG.md
|
|
223
|
+
└── README.md
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## 🛠 二次开发指南
|
|
229
|
+
|
|
230
|
+
### 1. 克隆 & 启动
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
git clone https://github.com/ChenyCHENYU/robot-cli.git
|
|
234
|
+
cd robot-cli
|
|
235
|
+
bun install # 安装依赖(或 npm install)
|
|
236
|
+
bun run build # 构建
|
|
237
|
+
bun run test # 运行测试
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### 2. 本地开发
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
bun run dev # watch 模式构建
|
|
244
|
+
bun link # 全局链接到本地 CLI
|
|
245
|
+
|
|
246
|
+
# 另一个终端测试
|
|
247
|
+
robot create test-app
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### 3. 添加新模板
|
|
251
|
+
|
|
252
|
+
编辑 `src/config/templates.config.ts`,在对应分类下新增:
|
|
253
|
+
|
|
254
|
+
```ts
|
|
255
|
+
"robot-your-template": {
|
|
256
|
+
name: "你的模板名称",
|
|
257
|
+
description: "模板描述",
|
|
258
|
+
repoUrl: "https://github.com/your-org/your-repo",
|
|
259
|
+
branch: "main", // 可选,默认 main
|
|
260
|
+
features: ["特性1", "特性2"],
|
|
261
|
+
version: "full", // full | base | micro
|
|
262
|
+
}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
**模板仓库规范**:
|
|
266
|
+
- 必须包含 `package.json`
|
|
267
|
+
- 使用 `_gitignore` 代替 `.gitignore`(npm publish 会忽略 `.gitignore`)
|
|
268
|
+
- 使用 `_env.example` 代替 `.env.example`
|
|
269
|
+
|
|
270
|
+
### 4. 修改 CLI 品牌
|
|
271
|
+
|
|
272
|
+
```ts
|
|
273
|
+
// package.json
|
|
274
|
+
{
|
|
275
|
+
"name": "@your-team/your-cli",
|
|
276
|
+
"bin": { "your-cli": "bin/robot.js" }
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// src/index.ts — 修改 banner、程序名
|
|
280
|
+
program.name('your-cli')
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### 5. 构建 & 发布
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
bun run lint # 代码检查
|
|
287
|
+
bun run typecheck # 类型检查
|
|
288
|
+
bun run build # 构建
|
|
289
|
+
bun run test # 测试
|
|
290
|
+
|
|
291
|
+
# 发布
|
|
292
|
+
npm publish --access public
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### 技术栈
|
|
296
|
+
|
|
297
|
+
| 类别 | 工具 |
|
|
298
|
+
|------|------|
|
|
299
|
+
| 语言 | TypeScript 5.7+ (strict) |
|
|
300
|
+
| 构建 | tsup 8 (ESM, target node20) |
|
|
301
|
+
| 测试 | Vitest 3 |
|
|
302
|
+
| 检查 | oxlint |
|
|
303
|
+
| 运行时 | Node.js >= 20 |
|
|
304
|
+
| 包管理 | bun (主) / npm (兼容) |
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## ❓ 常见问题
|
|
309
|
+
|
|
310
|
+
**Q: 提示 `command not found: robot`**
|
|
311
|
+
```bash
|
|
312
|
+
bun add -g @agile-team/robot-cli # 重新全局安装
|
|
313
|
+
# 或
|
|
314
|
+
npx @agile-team/robot-cli create # 免安装使用
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
**Q: 模板下载失败 / 超时**
|
|
318
|
+
```bash
|
|
319
|
+
robot doctor # 先诊断网络
|
|
320
|
+
robot create my-app --no-cache # 跳过缓存重试
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
**Q: 如何使用私有仓库模板?**
|
|
324
|
+
目前仅支持公开仓库。私有仓库支持计划中。
|
|
325
|
+
|
|
326
|
+
**Q: Monorepo / 微前端 / 模块联邦有什么区别?**
|
|
327
|
+
| 架构 | 适用场景 | 模板 Key |
|
|
328
|
+
|------|---------|---------|
|
|
329
|
+
| 单体应用 | 中小项目,快速启动 | `robot-admin` |
|
|
330
|
+
| Monorepo | 大型项目,多包共享 | `robot-monorepo` |
|
|
331
|
+
| MicroApp 微前端 | 多团队协作,独立部署 | `robot-micro-app` |
|
|
332
|
+
| Module Federation | 运行时共享模块 | `robot-module-federation` |
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## 🤝 贡献
|
|
337
|
+
|
|
338
|
+
欢迎提交 Issues 和 Pull Requests!
|
|
339
|
+
|
|
340
|
+
## 📜 许可证
|
|
341
|
+
|
|
342
|
+
MIT License
|
|
343
|
+
|
|
344
|
+
## 🔗 链接
|
|
345
|
+
|
|
346
|
+
- [GitHub](https://github.com/ChenyCHENYU/robot-cli)
|
|
347
|
+
- [npm](https://www.npmjs.com/package/@agile-team/robot-cli)
|
|
348
|
+
- [Issues](https://github.com/ChenyCHENYU/robot-cli/issues)
|
|
349
|
+
- [前端模板仓库](https://github.com/ChenyCHENYU/Robot_Admin)
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
```bash
|
|
354
|
+
# 立即体验
|
|
355
|
+
bunx @agile-team/robot-cli create my-awesome-project
|
|
439
356
|
```
|