fe-build-cli 1.2.5 → 1.5.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/README.md CHANGED
@@ -5,10 +5,15 @@
5
5
  ## 功能特性
6
6
 
7
7
  - ✅ 多服务器环境部署
8
- - ✅ 两种发布模式:主分支发布 / 当前分支发布
8
+ - ✅ 三种发布模式:主分支发布 / 当前分支发布 / Test 环境发布
9
9
  - ✅ Git 分支自动合并流程
10
+ - ✅ 智能处理本地改动(自动提交或 stash 储藏)
10
11
  - ✅ SSH 远程部署(带进度条)
11
12
  - ✅ 自动备份与回滚
13
+ - ✅ 线上备份下载到本地(保留 7 天)
14
+ - ✅ 详细日志记录(每一步操作及状态)
15
+ - ✅ 错误日志单独保存
16
+ - ✅ 钉钉通知(成功/失败)
12
17
  - ✅ 保护目录(部署时不删除指定目录)
13
18
  - ✅ TypeScript 类型支持
14
19
 
@@ -106,9 +111,12 @@ fe-build [deploy] [环境] [选项]
106
111
  | `环境` | 目标环境名称(如 production、test),或 `all` 部署到所有环境 |
107
112
  | `--config <路径>` | 指定配置文件路径 |
108
113
  | `--current-branch` | 使用当前分支发布(不切换分支) |
114
+ | `--test-branch` | 使用 Test 环境发布流程(智能处理本地改动) |
115
+ | `--merge` | Test 发布时合并本地改动 |
116
+ | `--no-merge` | Test 发布时使用 stash 储藏改动 |
109
117
  | `--main-branch` | 使用主分支发布流程 |
110
118
  | `--skip-build` | 跳过构建步骤 |
111
- | `--no-push` | 主分支发布时不推送到远程 |
119
+ | `--no-push` | 发布时不推送到远程 |
112
120
 
113
121
  **示例:**
114
122
 
@@ -122,6 +130,15 @@ fe-build deploy production
122
130
  # 当前分支发布(不切换分支)
123
131
  fe-build --current-branch
124
132
 
133
+ # Test 环境发布(智能处理本地改动)
134
+ fe-build --test-branch
135
+
136
+ # Test 发布,合并本地改动
137
+ fe-build --test-branch --merge
138
+
139
+ # Test 发布,stash 储藏改动
140
+ fe-build --test-branch --no-merge
141
+
125
142
  # 主分支发布流程
126
143
  fe-build --main-branch
127
144
 
@@ -135,24 +152,60 @@ fe-build --config ./custom-config.js
135
152
  ### rollback(回滚)
136
153
 
137
154
  ```bash
138
- fe-build rollback [环境] [--version <版本号>]
155
+ fe-build rollback [环境] [--server|--local] [--version <版本号>]
139
156
  ```
140
157
 
141
158
  | 参数 | 说明 |
142
159
  |------|------|
143
160
  | `环境` | 目标环境名称 |
144
- | `--version <版本号>` | 指定回滚版本(可选,默认回滚到上一版本) |
161
+ | `--server` | 使用服务器备份(默认) |
162
+ | `--local` | 使用本地备份 |
163
+ | `--version <版本号>` | 指定回滚版本(可选) |
164
+
165
+ **回滚流程:**
166
+
167
+ 1. 获取备份列表(服务器和本地)
168
+ 2. 选择备份来源(默认服务器)
169
+ 3. 从备份列表中选择要回滚的版本
170
+ 4. 执行回滚
145
171
 
146
172
  **示例:**
147
173
 
148
174
  ```bash
149
- # 回滚生产环境到上一版本
175
+ # 回滚生产环境(交互选择备份来源和版本)
150
176
  fe-build rollback production
151
177
 
178
+ # 回滚生产环境(使用服务器备份)
179
+ fe-build rollback production --server
180
+
181
+ # 回滚生产环境(使用本地备份)
182
+ fe-build rollback production --local
183
+
152
184
  # 回滚到指定版本
153
185
  fe-build rollback production --version build-20240101-abc123
154
186
  ```
155
187
 
188
+ **备份列表显示:**
189
+
190
+ ```
191
+ ========================================
192
+ 📦 选择备份来源
193
+ ========================================
194
+ 1. 服务器备份 (5 个) - 默认
195
+ 2. 本地备份 (3 个)
196
+ ========================================
197
+ 请选择备份来源 (1/2): 1
198
+
199
+ ========================================
200
+ 📦 服务器备份列表
201
+ ========================================
202
+ 1. 20260618-abc123 (12.5 MB) - 2026/6/18
203
+ 2. 20260617-def456 (11.8 MB) - 2026/6/17
204
+ 3. 20260616-ghi789 (10.2 MB) - 2026/6/16
205
+ ========================================
206
+ 请选择要回滚的备份 (1-3):
207
+ ```
208
+
156
209
  ### help(帮助)
157
210
 
158
211
  ```bash
@@ -163,7 +216,7 @@ fe-build -h
163
216
 
164
217
  ## 发布模式详解
165
218
 
166
- ### 主分支发布模式(默认)
219
+ ### 主分支发布模式
167
220
 
168
221
  流程:当前分支 → 测试分支 → 主分支 → 部署
169
222
 
@@ -185,7 +238,49 @@ fe-build -h
185
238
  6. 合并测试分支到主分支
186
239
  7. 推送主分支到远程
187
240
  8. 执行构建和部署
188
- 9. 可选择切回原分支
241
+ 9. 自动切回原分支
242
+
243
+ ### Test 环境发布模式(智能处理本地改动)
244
+
245
+ 流程:智能处理本地改动 → Test 分支 → 部署
246
+
247
+ **适用场景:** 发布到 Test 环境,自动处理本地未提交的改动
248
+
249
+ **智能处理策略:**
250
+
251
+ | 情况 | 处理方式 |
252
+ |------|---------|
253
+ | 当前已在 test 分支 | 直接拉取最新代码,无需切换 |
254
+ | 当前分支 ≠ test,无本地改动 | 直接切换到 test 分支发布 |
255
+ | 当前分支 ≠ test,有本地改动 | 选择合并或 stash |
256
+
257
+ **有本地改动时的选项:**
258
+
259
+ 1. **合并改动**(`--merge`):
260
+ - 自动提交当前分支改动
261
+ - 推送当前分支到远程
262
+ - 切换到 test 分支
263
+ - 合并当前分支到 test
264
+ - 推送 test 分支
265
+ - 部署完成后自动切回原分支
266
+
267
+ 2. **Stash 储藏**(`--no-merge`):
268
+ - 储藏本地改动
269
+ - 切换到 test 分支发布
270
+ - 部署完成后询问是否切回原分支
271
+ - 切回后自动恢复 stash
272
+
273
+ **示例:**
274
+ ```bash
275
+ # Test 环境发布(交互选择处理方式)
276
+ fe-build --test-branch
277
+
278
+ # Test 发布,合并本地改动
279
+ fe-build --test-branch --merge
280
+
281
+ # Test 发布,stash 储藏改动
282
+ fe-build --test-branch --no-merge
283
+ ```
189
284
 
190
285
  ### 当前分支发布模式
191
286
 
@@ -248,10 +343,15 @@ export default {
248
343
  // 备份保留数量(可选,默认 1)
249
344
  backupRetentionCount: 3,
250
345
 
346
+ // 日志配置(可选)
347
+ logDir: 'logs', // 日志目录,默认 'logs'
348
+ localBackupDir: 'D:\\备份', // 本地备份目录,默认 'D:\备份'
349
+
251
350
  // 钉钉通知配置(可选)
252
351
  dingtalk: {
253
352
  webhook: 'https://oapi.dingtalk.com/robot/send?access_token=your-token', // 钉钉机器人 webhook
254
- enabled: true // 是否启用通知,默认 true
353
+ keyword: '部署', // 安全设置关键词(可选)
354
+ enabled: true // 是否启用通知,默认 true
255
355
  }
256
356
  };
257
357
  ```
@@ -276,7 +376,10 @@ export default {
276
376
  | `servers[key].buildCommand` | string | 否 | 自定义构建命令 |
277
377
  | `servers[key].protectedDirs` | string[] | 否 | 保护目录列表 |
278
378
  | `backupRetentionCount` | number | 否 | 备份保留数量,默认 1 |
379
+ | `logDir` | string | 否 | 日志目录,默认 'logs' |
380
+ | `localBackupDir` | string | 否 | 本地备份目录,默认 'D:\备份' |
279
381
  | `dingtalk.webhook` | string | 否 | 钉钉机器人 webhook URL |
382
+ | `dingtalk.keyword` | string | 否 | 安全设置关键词 |
280
383
  | `dingtalk.enabled` | boolean | 否 | 是否启用通知,默认 true |
281
384
 
282
385
  ## 钉钉通知
@@ -308,15 +411,149 @@ dingtalk: {
308
411
 
309
412
  环境: production
310
413
  状态: ✅ 成功
311
- 时间: 2024-01-01 10:30:00
414
+ 时间: 2026/06/18 10:30:00
312
415
 
313
- 构建版本: build-20240101-abc123
416
+ ---
417
+
418
+ ### 部署详情
419
+
420
+ 构建版本: build-20260618-abc123
314
421
  发布分支: main
315
422
  发布模式: 主分支发布
316
423
  服务器: 101.44.66.5
317
424
  部署耗时: 120秒
318
425
 
319
- 访问地址: https://www.example.com
426
+ ---
427
+
428
+ ### 本次修改内容
429
+
430
+ feat: 新增用户管理模块
431
+
432
+ ---
433
+
434
+ ### 访问地址
435
+
436
+ https://www.example.com
437
+
438
+ > 部署完成,请及时验证功能是否正常。
439
+ ```
440
+
441
+ 部署失败通知:
442
+
443
+ ```
444
+ ❌ 部署失败通知
445
+
446
+ 环境: production
447
+ 状态: ❌ 失败
448
+ 时间: 2026/06/18 10:30:00
449
+
450
+ ---
451
+
452
+ ### 失败详情
453
+
454
+ 构建版本: build-20260618-abc123
455
+ 发布分支: main
456
+ 服务器: 101.44.66.5
457
+
458
+ ---
459
+
460
+ ### 本次修改内容
461
+
462
+ feat: 新增用户管理模块
463
+
464
+ ---
465
+
466
+ ### 错误信息
467
+
468
+ SSH 连接失败: Connection refused
469
+
470
+ > 请及时排查问题并重新部署。
471
+ ```
472
+
473
+ ## 日志记录
474
+
475
+ 每次部署都会自动记录详细的操作日志,包括每一步的执行状态。
476
+
477
+ ### 日志内容
478
+
479
+ 日志记录以下操作:
480
+
481
+ | 操作类型 | 记录内容 |
482
+ |---------|---------|
483
+ | 分支操作 | 切换分支(从哪个分支切换到哪个分支) |
484
+ | 代码合并 | 源分支→目标分支,是否有冲突 |
485
+ | Stash 操作 | 储藏/恢复本地改动 |
486
+ | 项目构建 | 构建模式、版本号、耗时 |
487
+ | 文件压缩 | 压缩包大小 |
488
+ | SSH 连接 | 服务器地址、连接状态 |
489
+ | 文件上传 | 本地路径、远程路径、大小、耗时、速度 |
490
+ | 备份操作 | 服务器备份/本地下载 |
491
+ | 部署解压 | 部署目录 |
492
+ | 钉钉通知 | 发送成功/失败 |
493
+
494
+ ### 日志文件
495
+
496
+ **存储位置**:`logs` 目录(可通过 `logDir` 配置)
497
+
498
+ **文件格式**:
499
+ ```
500
+ deploy-2026-06-18-10-30-45-success.json # 成功日志
501
+ deploy-2026-06-18-10-30-45-failed.json # 失败日志
502
+ error-2026-06-18-10-30-45.json # 错误日志(单独保存)
503
+ ```
504
+
505
+ **日志内容示例**:
506
+ ```json
507
+ {
508
+ "summary": {
509
+ "startTime": "2026/06/18 10:30:45",
510
+ "endTime": "2026/06/18 10:35:20",
511
+ "duration": 275,
512
+ "status": "success",
513
+ "totalSteps": 15,
514
+ "successSteps": 15,
515
+ "failedSteps": 0
516
+ },
517
+ "logs": [
518
+ {
519
+ "timestamp": "2026/06/18 10:30:45",
520
+ "level": "SUCCESS",
521
+ "step": "分支操作",
522
+ "message": "切换分支: feature-xxx → test, 成功",
523
+ "data": { "action": "切换分支", "fromBranch": "feature-xxx", "toBranch": "test" }
524
+ }
525
+ // ... 更多日志
526
+ ]
527
+ }
528
+ ```
529
+
530
+ ### 错误日志
531
+
532
+ 部署失败时,错误日志会单独保存一份,便于快速定位问题:
533
+ - 包含完整的错误信息
534
+ - 包含所有操作日志
535
+ - 文件名以 `error-` 开头
536
+
537
+ ## 线上备份下载
538
+
539
+ 部署完成后,线上备份会自动下载到本地保存。
540
+
541
+ ### 配置
542
+
543
+ ```javascript
544
+ // 本地备份目录(默认:D:\备份)
545
+ localBackupDir: 'D:\\备份'
546
+ ```
547
+
548
+ ### 自动清理
549
+
550
+ 本地备份自动保留 **7 天**,超过 7 天的备份文件会被自动清理。
551
+
552
+ ### 备份文件命名
553
+
554
+ ```
555
+ backup-production-build-20260618-abc123.tar.gz
556
+ backup-test-build-20260618-def456.tar.gz
320
557
  ```
321
558
 
322
559
  ## 部署流程详解
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fe-build-cli",
3
- "version": "1.2.5",
3
+ "version": "1.5.0",
4
4
  "description": "前端项目打包部署 CLI 工具,支持多服务器部署、分支管理、回滚、钉钉通知、智能处理本地改动等功能",
5
5
  "type": "module",
6
6
  "main": "src/index.js",