@zjex/git-workflow 0.2.5 → 0.2.6
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 +114 -4
- package/dist/index.js +497 -41
- package/package.json +1 -1
- package/src/ai-service.ts +350 -0
- package/src/commands/commit.ts +121 -36
- package/src/commands/init.ts +156 -9
- package/src/config.ts +9 -0
- package/src/index.ts +23 -1
- package/test-ctrl-c.mjs +0 -32
- package/test-full-flow.mjs +0 -108
- package/test-update-flow.mjs +0 -98
package/README.md
CHANGED
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
## 特性
|
|
37
37
|
|
|
38
38
|
- ⚡️ **极速上手** - 零配置开箱即用,交互式菜单引导操作
|
|
39
|
+
- 🤖 **AI 智能提交** - 使用 AI 自动分析代码变更生成 commit message(支持 GitHub Models、Groq 等)
|
|
39
40
|
- 🎯 **规范命名** - 自动生成带日期的规范分支名,告别命名混乱
|
|
40
41
|
- 🏷️ **智能版本** - 自动识别当前版本,交互式选择下一版本(支持 semver + 预发布)
|
|
41
42
|
- 📝 **规范提交** - 遵循 Conventional Commits + Gitmoji,提交信息更清晰
|
|
@@ -43,6 +44,7 @@
|
|
|
43
44
|
- ⚙️ **灵活配置** - 支持项目级配置文件,不同项目不同规范
|
|
44
45
|
- 🎨 **优雅交互** - 友好的命令行界面,支持键盘快捷操作
|
|
45
46
|
- 📦 **轻量依赖** - 打包体积小,安装快速无负担
|
|
47
|
+
- 🔔 **版本提醒** - 自动检测新版本,一键更新
|
|
46
48
|
|
|
47
49
|
## 快速开始
|
|
48
50
|
|
|
@@ -348,12 +350,58 @@ gw st
|
|
|
348
350
|
|
|
349
351
|
遵循 [Conventional Commits](https://www.conventionalcommits.org/zh-hans/) 规范,并自动添加 [Gitmoji](https://gitmoji.dev/) 表情:
|
|
350
352
|
|
|
353
|
+
#### 🤖 AI 自动生成(推荐)
|
|
354
|
+
|
|
355
|
+
使用 AI 自动分析代码变更生成 commit message:
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
gw c
|
|
359
|
+
# 已暂存的文件:
|
|
360
|
+
# src/ai-service.ts
|
|
361
|
+
# src/commands/commit.ts
|
|
362
|
+
# ────────────────────────────────────────
|
|
363
|
+
# ? 选择 commit 方式:
|
|
364
|
+
# ❯ 🤖 AI 自动生成 commit message
|
|
365
|
+
# ✍️ 手动编写 commit message
|
|
366
|
+
#
|
|
367
|
+
# ✔ AI 生成完成
|
|
368
|
+
#
|
|
369
|
+
# AI 生成的 commit message:
|
|
370
|
+
# feat(ai): 添加 AI commit message 自动生成功能
|
|
371
|
+
# ────────────────────────────────────────
|
|
372
|
+
# ? 使用这个 commit message?
|
|
373
|
+
# ❯ ✅ 使用
|
|
374
|
+
# ❌ 不使用,切换到手动模式
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
**特点:**
|
|
378
|
+
|
|
379
|
+
- ⚡️ 快速:2-3 秒生成
|
|
380
|
+
- 🎯 准确:自动识别 feat/fix/docs 等类型
|
|
381
|
+
- 📝 规范:符合 Conventional Commits
|
|
382
|
+
- 🇨🇳 支持中英文
|
|
383
|
+
- 🔄 可预览、可拒绝、可降级到手动模式
|
|
384
|
+
|
|
385
|
+
**支持的 AI 提供商:**
|
|
386
|
+
|
|
387
|
+
- **GitHub Models**(免费,推荐)- 使用 GitHub 账号,每天 150 次
|
|
388
|
+
- **Groq**(免费)- 需要注册,每天 14,400 次
|
|
389
|
+
- **OpenAI**(付费)- 需要 API key
|
|
390
|
+
- **Claude**(付费)- 需要 API key
|
|
391
|
+
- **Ollama**(本地)- 需要安装 Ollama
|
|
392
|
+
|
|
393
|
+
#### ✍️ 手动编写
|
|
394
|
+
|
|
351
395
|
```bash
|
|
352
396
|
gw c
|
|
353
397
|
# 已暂存的文件:
|
|
354
398
|
# src/index.ts
|
|
355
399
|
# src/utils.ts
|
|
356
400
|
# ────────────────────────────────────────
|
|
401
|
+
# ? 选择 commit 方式:
|
|
402
|
+
# 🤖 AI 自动生成 commit message
|
|
403
|
+
# ❯ ✍️ 手动编写 commit message
|
|
404
|
+
#
|
|
357
405
|
# ? 选择提交类型:
|
|
358
406
|
# ✨ feat 新功能
|
|
359
407
|
# 🐛 fix 修复 Bug
|
|
@@ -369,7 +417,9 @@ gw c
|
|
|
369
417
|
# ? 输入影响范围 scope (可跳过): auth
|
|
370
418
|
# ? 输入简短描述: add login validation
|
|
371
419
|
# ? 输入详细描述 (可跳过):
|
|
372
|
-
# ? 是否包含破坏性变更 (BREAKING CHANGE)?
|
|
420
|
+
# ? 是否包含破坏性变更 (BREAKING CHANGE)?
|
|
421
|
+
# ❯ 否
|
|
422
|
+
# 是
|
|
373
423
|
# ? 关联 Issue (如 #123, 可跳过): #42
|
|
374
424
|
# ────────────────────────────────────────
|
|
375
425
|
# 提交信息预览:
|
|
@@ -377,11 +427,15 @@ gw c
|
|
|
377
427
|
#
|
|
378
428
|
# #42
|
|
379
429
|
# ────────────────────────────────────────
|
|
380
|
-
# ? 确认提交?
|
|
430
|
+
# ? 确认提交?
|
|
431
|
+
# ❯ ✅ 确认提交
|
|
432
|
+
# ❌ 取消
|
|
381
433
|
# ✔ 提交成功
|
|
382
434
|
# commit: a1b2c3d
|
|
383
435
|
```
|
|
384
436
|
|
|
437
|
+
#### 自动暂存
|
|
438
|
+
|
|
385
439
|
如果没有暂存的更改,根据配置决定行为:
|
|
386
440
|
|
|
387
441
|
**默认行为(`autoStage: true`):**
|
|
@@ -434,7 +488,15 @@ gw c
|
|
|
434
488
|
"defaultTagPrefix": "v",
|
|
435
489
|
"autoPush": true,
|
|
436
490
|
"autoStage": true,
|
|
437
|
-
"useEmoji": true
|
|
491
|
+
"useEmoji": true,
|
|
492
|
+
"aiCommit": {
|
|
493
|
+
"enabled": true,
|
|
494
|
+
"provider": "github",
|
|
495
|
+
"apiKey": "",
|
|
496
|
+
"model": "gpt-4o-mini",
|
|
497
|
+
"language": "zh-CN",
|
|
498
|
+
"maxTokens": 200
|
|
499
|
+
}
|
|
438
500
|
}
|
|
439
501
|
```
|
|
440
502
|
|
|
@@ -453,11 +515,59 @@ gw c
|
|
|
453
515
|
| `autoStage` | `boolean` | `true` | commit 时是否自动暂存所有更改 |
|
|
454
516
|
| `useEmoji` | `boolean` | `true` | commit 时是否使用 emoji |
|
|
455
517
|
| `commitEmojis` | `object` | - | 自定义各类型 commit 的 emoji |
|
|
518
|
+
| `aiCommit` | `object` | - | AI commit 配置 |
|
|
519
|
+
|
|
520
|
+
#### AI Commit 配置项
|
|
521
|
+
|
|
522
|
+
| 配置项 | 类型 | 默认值 | 说明 |
|
|
523
|
+
| -------------------- | --------- | ---------- | ------------------------------------------------------------- |
|
|
524
|
+
| `aiCommit.enabled` | `boolean` | `true` | 是否启用 AI commit 功能 |
|
|
525
|
+
| `aiCommit.provider` | `string` | `"github"` | AI 提供商:`github` / `groq` / `openai` / `claude` / `ollama` |
|
|
526
|
+
| `aiCommit.apiKey` | `string` | - | API key,留空使用内置 key |
|
|
527
|
+
| `aiCommit.model` | `string` | 根据提供商 | 模型名称 |
|
|
528
|
+
| `aiCommit.language` | `string` | `"zh-CN"` | 生成语言:`zh-CN` / `en-US` |
|
|
529
|
+
| `aiCommit.maxTokens` | `number` | `200` | 最大 token 数 |
|
|
456
530
|
|
|
457
531
|
### 常见配置场景
|
|
458
532
|
|
|
459
533
|
<details>
|
|
460
|
-
<summary><b
|
|
534
|
+
<summary><b>场景一:启用 AI Commit(推荐)</b></summary>
|
|
535
|
+
|
|
536
|
+
```json
|
|
537
|
+
{
|
|
538
|
+
"aiCommit": {
|
|
539
|
+
"enabled": true,
|
|
540
|
+
"provider": "github",
|
|
541
|
+
"language": "zh-CN"
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
**说明:**
|
|
547
|
+
|
|
548
|
+
- 使用 GitHub Models(免费)
|
|
549
|
+
- 生成中文 commit message
|
|
550
|
+
- 使用内置 API key(开箱即用)
|
|
551
|
+
|
|
552
|
+
如果想使用自己的 key:
|
|
553
|
+
|
|
554
|
+
```json
|
|
555
|
+
{
|
|
556
|
+
"aiCommit": {
|
|
557
|
+
"enabled": true,
|
|
558
|
+
"provider": "github",
|
|
559
|
+
"apiKey": "ghp_your_token_here",
|
|
560
|
+
"language": "zh-CN"
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
获取 GitHub Token:https://github.com/settings/tokens/new
|
|
566
|
+
|
|
567
|
+
</details>
|
|
568
|
+
|
|
569
|
+
<details>
|
|
570
|
+
<summary><b>场景二:强制要求关联 Issue</b></summary>
|
|
461
571
|
|
|
462
572
|
```json
|
|
463
573
|
{
|