zen-gitsync 2.12.7 → 2.12.9
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 +58 -2
- package/package.json +1 -1
- package/scripts/README_COLOR_CONVERTER.md +196 -196
- package/scripts/README_FONTSIZE_CONVERTER.md +278 -278
- package/scripts/README_SPACING_CONVERTER.md +126 -126
- package/scripts/README_STYLE_VARS.md +180 -180
- package/src/ui/public/assets/EditorView-C4DezJRA.js +0 -0
- package/src/ui/public/assets/{EditorView-DK-Xgt7r.css → EditorView-DEd8QuPp.css} +1 -1
- package/src/ui/public/assets/SourceMapView-B521sL_k.js +3 -0
- package/src/ui/public/assets/SourceMapView-P9hbpXgz.css +1 -0
- package/src/ui/public/assets/WorkbenchView-75x9qygA.js +1 -0
- package/src/ui/public/assets/WorkbenchView-Dc9vThI8.css +1 -0
- package/src/ui/public/assets/_plugin-vue_export-helper-DMUTnP0C.js +9 -0
- package/src/ui/public/assets/{css.worker-CvXBzhp8.js → css.worker-Wv5dxAWO.js} +1 -1
- package/src/ui/public/assets/{html.worker-BO6WuOEO.js → html.worker-CQP8QQsS.js} +1 -1
- package/src/ui/public/assets/index-BCIFnj7e.css +1 -0
- package/src/ui/public/assets/index-cS1g7H--.js +65 -0
- package/src/ui/public/assets/{json.worker-BkJRGcCJ.js → json.worker-DzV-CpCQ.js} +1 -1
- package/src/ui/public/assets/{ts.worker-B0J26iPs.js → ts.worker-Dth06zuC.js} +15 -15
- package/src/ui/public/assets/vendor-B2yudN8R.css +1 -0
- package/src/ui/public/assets/{vendor-BMFU1ekz.js → vendor-C1sPhIEb.js} +242 -249
- package/src/ui/public/favicon.svg +75 -75
- package/src/ui/public/index.html +23 -22
- package/src/ui/public/logo.svg +74 -74
- package/src/ui/server/index.js +9 -0
- package/src/ui/server/routes/workbench.js +1068 -0
- package/src/ui/public/assets/EditorView-DDyMmxPI.js +0 -0
- package/src/ui/public/assets/SourceMapView-DakscAmd.js +0 -3
- package/src/ui/public/assets/SourceMapView-DyMK80hS.css +0 -1
- package/src/ui/public/assets/index-CPUqt5Ue.js +0 -73
- package/src/ui/public/assets/index-a-r8YYZJ.css +0 -1
- package/src/ui/public/assets/vendor-BPPhhD0O.css +0 -1
- /package/src/ui/public/assets/{editor.worker-Cn2oRESe.js → editor.worker-Bd9IXS8d.js} +0 -0
- /package/src/ui/public/assets/{rolldown-runtime-CMxvf4Kt.js → rolldown-runtime-BM3Ffeng.js} +0 -0
package/README.md
CHANGED
|
@@ -21,6 +21,7 @@ A Git automation platform with interactive commits, scheduled sync, custom comma
|
|
|
21
21
|
- [Project Startup](#project-startup)
|
|
22
22
|
- [Built-in Code Editor](#built-in-code-editor)
|
|
23
23
|
- [Source Map](#source-map-ai-codebase-visualization)
|
|
24
|
+
- [Workbench](#workbench-task-driven-claude-execution)
|
|
24
25
|
- [Settings](#settings)
|
|
25
26
|
- [CLI Commands](#cli-commands)
|
|
26
27
|
|
|
@@ -50,7 +51,10 @@ npm install -g zen-gitsync
|
|
|
50
51
|
- **Project startup** — Auto-run commands or workflows when a project opens
|
|
51
52
|
- **Built-in code editor** — Monaco-based file editor with Markdown preview
|
|
52
53
|
- **Source map** — AI-generated interactive codebase dependency graph
|
|
54
|
+
- **Workbench** — task-driven Claude execution with prompt presets, subtask splitting, isolated bypass-permissions windows, live stdout streaming, AI-generated presets, and sub-task file attachments
|
|
55
|
+
- **Reset to remote** — One-click `git reset --hard origin/<branch>` from the Git panel (auto-refreshes branch info first to avoid wrong-target resets)
|
|
53
56
|
- **AI commit message** — Generate commit message from staged diff automatically
|
|
57
|
+
- **Selection-scoped diff** — AI commit message and quick commit/push use only the diff of currently selected files when the Git view is the active tab
|
|
54
58
|
- **Commit templates** — Save type/scope/description/message templates
|
|
55
59
|
- **Theme & language** — Light/dark theme and Chinese/English UI
|
|
56
60
|
|
|
@@ -65,7 +69,7 @@ $ g ui
|
|
|
65
69
|
|
|
66
70
|

|
|
67
71
|
|
|
68
|
-
The GUI runs as a local web server and opens in your default browser. It attaches to the current Git repository automatically. The activity bar on the left switches between
|
|
72
|
+
The GUI runs as a local web server and opens in your default browser. It attaches to the current Git repository automatically. The activity bar on the left switches between four views: **Git**, **Editor**, **Source Map**, and **Workbench**.
|
|
69
73
|
|
|
70
74
|
---
|
|
71
75
|
|
|
@@ -83,6 +87,7 @@ The GUI runs as a local web server and opens in your default browser. It attache
|
|
|
83
87
|
| Push | Push to remote with live progress modal |
|
|
84
88
|
| Quick commit+push | One-click stage → commit → push |
|
|
85
89
|
| Pull / Fetch | Pull from or fetch the upstream branch |
|
|
90
|
+
| Reset to remote | One-click `git reset --hard origin/<branch>`; auto-refreshes branch info first to avoid stale-branch targets; hidden when working tree is clean and no unpushed commits |
|
|
86
91
|
| Merge | Merge another branch; detects and surfaces in-progress merge state |
|
|
87
92
|
| Diff viewer | Monaco-based side-by-side diff for any changed file |
|
|
88
93
|
| Commit log | Browse commit history with author, date, branch tags, and changed files |
|
|
@@ -232,6 +237,29 @@ Configure the model endpoint, API key, and model name in **Settings → AI**.
|
|
|
232
237
|
|
|
233
238
|
---
|
|
234
239
|
|
|
240
|
+
### Workbench (Task-Driven Claude Execution)
|
|
241
|
+
|
|
242
|
+
A dedicated view (fourth icon in the activity bar) for batch-running Claude against your repo. Define a task, split it into ordered subtasks, attach a reusable prompt preset, then click **Run task** — each subtask launches in its own terminal window with `claude --permission-mode bypassPermissions`, so context never piles up.
|
|
243
|
+
|
|
244
|
+
| Feature | Description |
|
|
245
|
+
|---|---|
|
|
246
|
+
| Task list | Create, edit, delete tasks; each shows its subtask count |
|
|
247
|
+
| Subtask breakdown | Add / edit / remove subtasks per task, with per-subtask status |
|
|
248
|
+
| Subtask attachments | Attach up to 9 files per subtask (image / PDF / text / Markdown / CSV / JSON / log, ≤ 5 MB each); their absolute paths are appended to the prompt so Claude reads them directly |
|
|
249
|
+
| Prompt presets | Reusable prompt templates with `{{task.title}}` / `{{task.desc}}` / `{{sub.title}}` / `{{sub.desc}}` / `{{repo.path}}` / `{{branch}}` variable interpolation |
|
|
250
|
+
| AI prompt generation | "New / Edit preset" dialog has an **AI Generate** button — the server reads the current project tree (depth 2) + README + manifests (package.json / pyproject.toml / go.mod / Cargo.toml / …) and asks the configured LLM to draft a project-aware preset (name + body) |
|
|
251
|
+
| Per-subtask override | Override the preset's content for a specific subtask in its description field |
|
|
252
|
+
| Sequential execution | Runs subtasks in declared order; the next one starts only after the previous process exits |
|
|
253
|
+
| Pipe-mode launcher | Spawns `claude -p "<prompt>" --output-format text --permission-mode bypassPermissions --dangerously-skip-permissions` with stdout/stderr piped to the server — no external terminal window is opened, so output streams directly into the UI |
|
|
254
|
+
| Isolated windows | Every subtask runs as its own detached process with fresh context, so memory and conversation state never accumulate across subtasks |
|
|
255
|
+
| Live log | Each running subtask has an expandable "执行日志 / Execution log" panel that auto-scrolls and shows accumulated `stdout` + `stderr` (capped at 256 KB server-side, last 64 KB rendered client-side) |
|
|
256
|
+
| Live status | Subtask status (todo / pending / running / done / error) and PID stream in real time over SSE |
|
|
257
|
+
| Cross-view indicator | While any Workbench subtask is running, a pulsing dot appears on the Workbench icon in the Activity Bar so you can see job state from the Git or Editor view |
|
|
258
|
+
|
|
259
|
+
Prompt presets and tasks are persisted to `~/.zen-gitsync/prompts.json` and `~/.zen-gitsync/tasks.json` (cross-project, shared across repos).
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
235
263
|
### Settings
|
|
236
264
|
|
|
237
265
|
| Setting | Description |
|
|
@@ -371,6 +399,7 @@ $ g --check-lock=config.json
|
|
|
371
399
|
- [项目启动](#项目启动)
|
|
372
400
|
- [内置代码编辑器](#内置代码编辑器)
|
|
373
401
|
- [源码地图](#源码地图ai-代码库可视化)
|
|
402
|
+
- [工作台](#工作台任务驱动的-claude-执行)
|
|
374
403
|
- [设置](#设置)
|
|
375
404
|
- [命令行](#命令行)
|
|
376
405
|
|
|
@@ -400,7 +429,10 @@ npm install -g zen-gitsync
|
|
|
400
429
|
- **项目启动** — 打开项目时自动运行命令或工作流
|
|
401
430
|
- **内置代码编辑器** — 基于 Monaco 的文件编辑器,支持 Markdown 预览
|
|
402
431
|
- **源码地图** — AI 生成的交互式代码库依赖关系图
|
|
432
|
+
- **工作台** — 任务驱动的 Claude 执行视图:提示词预置、子任务拆分、独立 bypass-permissions 进程、stdout 实时回传、AI 自动生成预置提示词、子任务附件
|
|
433
|
+
- **重置到远程** — 在 Git 面板一键执行 `git reset --hard origin/<branch>`(点击前会先自动刷新分支信息,避免重置到陈旧分支)
|
|
403
434
|
- **AI 生成提交信息** — 基于 staged diff 自动生成提交消息
|
|
435
|
+
- **选择模式差异** — 当 Git 视图为当前激活标签时,AI 生成提交信息与一键提交/推送仅作用于当前勾选文件的 diff
|
|
404
436
|
- **提交模板** — 保存类型/范围/描述/完整提交信息模板
|
|
405
437
|
- **主题与语言** — 支持明/暗主题,中英文界面切换
|
|
406
438
|
|
|
@@ -415,7 +447,7 @@ $ g ui
|
|
|
415
447
|
|
|
416
448
|

|
|
417
449
|
|
|
418
|
-
GUI 以本地 Web 服务器形式运行,自动在浏览器中打开,并附加到当前 Git 仓库。左侧 Activity Bar
|
|
450
|
+
GUI 以本地 Web 服务器形式运行,自动在浏览器中打开,并附加到当前 Git 仓库。左侧 Activity Bar 可在四个视图之间切换:**Git**、**编辑器**、**源码地图**、**工作台**。
|
|
419
451
|
|
|
420
452
|
---
|
|
421
453
|
|
|
@@ -433,6 +465,7 @@ GUI 以本地 Web 服务器形式运行,自动在浏览器中打开,并附
|
|
|
433
465
|
| 推送 | 推送到远程,实时显示进度弹窗 |
|
|
434
466
|
| 快速提交+推送 | 一键完成暂存 → 提交 → 推送 |
|
|
435
467
|
| 拉取 / Fetch | 从上游拉取或仅获取远程信息 |
|
|
468
|
+
| 重置到远程 | 一键执行 `git reset --hard origin/<branch>`;点击前会先刷新分支信息,避免重置到陈旧分支;当工作区干净且无未推送提交时按钮自动隐藏 |
|
|
436
469
|
| 合并 | 合并其他分支,自动检测并引导处理合并中间状态 |
|
|
437
470
|
| Diff 查看器 | 基于 Monaco 编辑器的并排文件差异视图 |
|
|
438
471
|
| 提交日志 | 浏览历史提交(作者、时间、分支标签、变更文件) |
|
|
@@ -582,6 +615,29 @@ Activity Bar 第三个视图,调用 AI 模型将项目代码库生成可交互
|
|
|
582
615
|
|
|
583
616
|
---
|
|
584
617
|
|
|
618
|
+
### 工作台(任务驱动的 Claude 执行)
|
|
619
|
+
|
|
620
|
+
Activity Bar 第四个视图,用于在当前仓库上批量调度 Claude:定义任务、拆成有序子任务、绑定可复用的提示词预置,点 **执行任务** 后按顺序依次执行。
|
|
621
|
+
|
|
622
|
+
| 功能 | 说明 |
|
|
623
|
+
|---|---|
|
|
624
|
+
| 任务列表 | 新建、编辑、删除任务;每条任务显示子任务数量 |
|
|
625
|
+
| 子任务拆分 | 增删改子任务,实时显示每个子任务的执行状态 |
|
|
626
|
+
| 子任务附件 | 每个子任务最多挂 9 个附件(图片 / PDF / 文本 / Markdown / CSV / JSON / log,单个 ≤ 5 MB);执行时绝对路径会自动追加到 prompt 末尾,Claude 直接按路径读取 |
|
|
627
|
+
| 提示词预置 | 可复用提示词模板,支持 `{{task.title}}` / `{{task.desc}}` / `{{sub.title}}` / `{{sub.desc}}` / `{{repo.path}}` / `{{branch}}` 变量插值 |
|
|
628
|
+
| AI 生成预置 | 「新建 / 编辑预置」对话框内置 **AI 生成项目架构说明** 按钮 + **编辑指令** 按钮:服务端递归识别当前项目里的所有子项目(含 `.git` 或 9 种 manifest 之一的目录),为每个子项目独立读取关键文件(manifest 20 KB / README 8 KB / 2 层目录树),并发调 LLM 产出各子项目架构说明,多子项目场景再合并成一份整体说明;用户可点「编辑指令」自定义生成策略(持久化到 `~/.zen-gitsync/ai-instruction.json`);`max_tokens=4000`,单次请求最多 20 分钟 |
|
|
629
|
+
| 子任务覆盖 | 在子任务描述框可独立覆盖预置提示词的内容 |
|
|
630
|
+
| 顺序执行 | 按声明顺序依次执行子任务;上一个进程退出后才启动下一个 |
|
|
631
|
+
| 管道模式启动 | 直接以 `claude -p "<prompt>" --output-format text --permission-mode bypassPermissions --dangerously-skip-permissions` 拉起进程,stdout / stderr 通过管道回传服务端,不再弹外部终端窗口 |
|
|
632
|
+
| 独立上下文 | 每个子任务都是独立的 detached 进程,上下文与状态不会跨子任务累积 |
|
|
633
|
+
| 实时日志 | 正在执行的子任务可展开「执行日志」面板,自动滚到底,展示累积的 stdout / stderr(服务端缓存 256 KB,客户端渲染最近 64 KB) |
|
|
634
|
+
| 实时状态 | 子任务状态(todo / pending / running / done / error)和 PID 通过 SSE 实时推送 |
|
|
635
|
+
| 跨视图指示 | 任意子任务运行中时,Activity Bar 上的工作台图标会显示脉动小圆点;切换到 Git 或编辑器视图也能看到运行状态 |
|
|
636
|
+
|
|
637
|
+
提示词预置与任务数据持久化到 `~/.zen-gitsync/prompts.json` 和 `~/.zen-gitsync/tasks.json`(跨项目共享)。子任务附件落盘在 `~/.zen-gitsync/workbench-images/<subId>/`。
|
|
638
|
+
|
|
639
|
+
---
|
|
640
|
+
|
|
585
641
|
### 设置
|
|
586
642
|
|
|
587
643
|
| 设置项 | 说明 |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zen-gitsync",
|
|
3
|
-
"version": "2.12.
|
|
3
|
+
"version": "2.12.9",
|
|
4
4
|
"description": "Auto commit, scheduled sync, and visual GUI for Git. Run `g` in any repo for one-key commit & push, AI commit messages, scheduled background sync, and a drag-and-drop workflow builder.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -1,196 +1,196 @@
|
|
|
1
|
-
# 颜色值转换工具使用说明
|
|
2
|
-
|
|
3
|
-
## 功能说明
|
|
4
|
-
|
|
5
|
-
该脚本将项目中硬编码的十六进制颜色值转换为标准的 CSS 变量引用。
|
|
6
|
-
|
|
7
|
-
## 颜色映射规则
|
|
8
|
-
|
|
9
|
-
基于项目中的 `src/ui/client/src/styles/variables.scss` 定义:
|
|
10
|
-
|
|
11
|
-
### 主色调
|
|
12
|
-
- `#409eff` → `var(--color-primary)`
|
|
13
|
-
- `#5a67d8`, `#66b1ff` → `var(--color-primary-light)`
|
|
14
|
-
- `#337ecc` → `var(--color-primary-dark)`
|
|
15
|
-
|
|
16
|
-
### 成功色
|
|
17
|
-
- `#67c23a` → `var(--color-success)`
|
|
18
|
-
- `#10b981` → `var(--color-success-light)`
|
|
19
|
-
|
|
20
|
-
### 警告色
|
|
21
|
-
- `#e6a23c` → `var(--color-warning)`
|
|
22
|
-
- `#f59e0b` → `var(--color-warning-light)`
|
|
23
|
-
|
|
24
|
-
### 危险色
|
|
25
|
-
- `#f56c6c` → `var(--color-danger)`
|
|
26
|
-
- `#ef4444` → `var(--color-danger-light)`
|
|
27
|
-
- `#dc2626` → `var(--color-danger-dark)`
|
|
28
|
-
|
|
29
|
-
### 信息色
|
|
30
|
-
- `#909399` → `var(--color-info)`
|
|
31
|
-
- `#8b5cf6` → `var(--color-info-light)`
|
|
32
|
-
|
|
33
|
-
### 文字颜色
|
|
34
|
-
- `#303133` → `var(--text-primary)`
|
|
35
|
-
- `#606266` → `var(--text-secondary)`
|
|
36
|
-
- `#909399` → `var(--text-tertiary)`
|
|
37
|
-
- `#c0c4cc`, `#a8abb2` → `var(--text-placeholder)`
|
|
38
|
-
|
|
39
|
-
### Git 状态颜色
|
|
40
|
-
- `#10b981` → `var(--git-status-added)`
|
|
41
|
-
- `#f59e0b` → `var(--git-status-modified)`
|
|
42
|
-
- `#ef4444` → `var(--git-status-deleted)`
|
|
43
|
-
- `#8b5cf6` → `var(--git-status-untracked)`
|
|
44
|
-
|
|
45
|
-
## 使用方法
|
|
46
|
-
|
|
47
|
-
### 预览模式(推荐先运行)
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
# 预览将要进行的更改,不修改文件
|
|
51
|
-
node scripts/convert-colors-to-vars.cjs --dry-run
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### 实际应用
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
# 应用更改到文件
|
|
58
|
-
node scripts/convert-colors-to-vars.cjs
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## 转换示例
|
|
62
|
-
|
|
63
|
-
**转换前:**
|
|
64
|
-
```vue
|
|
65
|
-
<style>
|
|
66
|
-
.button {
|
|
67
|
-
background: #409eff;
|
|
68
|
-
color: #ffffff;
|
|
69
|
-
border: 1px solid #66b1ff;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
.success-button {
|
|
73
|
-
background: #67c23a;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
.text {
|
|
77
|
-
color: #303133;
|
|
78
|
-
}
|
|
79
|
-
</style>
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
**转换后:**
|
|
83
|
-
```vue
|
|
84
|
-
<style>
|
|
85
|
-
.button {
|
|
86
|
-
background: var(--color-primary);
|
|
87
|
-
color: var(--color-white);
|
|
88
|
-
border: 1px solid var(--color-primary-light);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
.success-button {
|
|
92
|
-
background: var(--color-success);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.text {
|
|
96
|
-
color: var(--text-primary);
|
|
97
|
-
}
|
|
98
|
-
</style>
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## 支持的文件类型
|
|
102
|
-
|
|
103
|
-
- `.vue` - Vue 单文件组件
|
|
104
|
-
- `.scss` - Sass 样式文件
|
|
105
|
-
- `.css` - 纯 CSS 文件
|
|
106
|
-
|
|
107
|
-
## 跳过的文件
|
|
108
|
-
|
|
109
|
-
脚本会自动跳过以下文件(这些文件定义了变量本身):
|
|
110
|
-
- `variables.scss`
|
|
111
|
-
- `dark-theme.scss`
|
|
112
|
-
|
|
113
|
-
同时自动跳过以下目录:
|
|
114
|
-
- `node_modules`
|
|
115
|
-
- `.git`
|
|
116
|
-
- `dist`
|
|
117
|
-
|
|
118
|
-
## 输出报告
|
|
119
|
-
|
|
120
|
-
执行完成后会显示详细的统计报告:
|
|
121
|
-
|
|
122
|
-
```
|
|
123
|
-
📊 转换统计报告
|
|
124
|
-
============================================================
|
|
125
|
-
总文件数: 150
|
|
126
|
-
修改文件数: 42
|
|
127
|
-
总替换次数: 289
|
|
128
|
-
|
|
129
|
-
📋 替换详情:
|
|
130
|
-
#409eff => var(--color-primary): 78 次
|
|
131
|
-
#67c23a => var(--color-success): 45 次
|
|
132
|
-
#f56c6c => var(--color-danger): 32 次
|
|
133
|
-
...
|
|
134
|
-
|
|
135
|
-
⚠️ 未映射的颜色(需要手动检查):
|
|
136
|
-
#f8faff
|
|
137
|
-
#eef4ff
|
|
138
|
-
...
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## 注意事项
|
|
142
|
-
|
|
143
|
-
1. **备份建议**:运行脚本前建议先使用 `--dry-run` 参数预览更改
|
|
144
|
-
2. **Git 提交**:建议在运行前提交当前代码,方便回滚
|
|
145
|
-
3. **未映射颜色**:脚本会列出未映射的颜色,需要手动检查这些颜色是否需要添加到映射表
|
|
146
|
-
4. **特殊颜色**:某些渐变色或特殊效果的颜色可能需要保留原值
|
|
147
|
-
5. **rgba 颜色**:当前脚本仅处理十六进制颜色值,rgba 格式需要手动处理
|
|
148
|
-
|
|
149
|
-
## 优势
|
|
150
|
-
|
|
151
|
-
使用 CSS 变量替代硬编码颜色的好处:
|
|
152
|
-
|
|
153
|
-
1. **统一管理**:所有颜色在 `variables.scss` 中统一定义
|
|
154
|
-
2. **主题切换**:轻松实现深色主题等样式变体
|
|
155
|
-
3. **易于维护**:修改变量值即可全局更新
|
|
156
|
-
4. **语义化**:变量名更具可读性(如 `--color-success` vs `#67c23a`)
|
|
157
|
-
5. **一致性**:确保整个项目使用统一的配色方案
|
|
158
|
-
|
|
159
|
-
## 扩展映射表
|
|
160
|
-
|
|
161
|
-
如果发现新的颜色值需要映射,编辑脚本中的 `COLOR_MAP` 对象:
|
|
162
|
-
|
|
163
|
-
```javascript
|
|
164
|
-
const COLOR_MAP = {
|
|
165
|
-
// 添加新的映射
|
|
166
|
-
'#your-color': 'var(--your-variable)',
|
|
167
|
-
// ...
|
|
168
|
-
};
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
## 回滚方法
|
|
172
|
-
|
|
173
|
-
如果需要回滚更改:
|
|
174
|
-
|
|
175
|
-
```bash
|
|
176
|
-
# 如果还未提交
|
|
177
|
-
git checkout -- src/
|
|
178
|
-
|
|
179
|
-
# 如果已提交
|
|
180
|
-
git revert <commit-hash>
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
## 与其他脚本配合
|
|
184
|
-
|
|
185
|
-
该脚本可以与其他样式标准化脚本配合使用:
|
|
186
|
-
|
|
187
|
-
```bash
|
|
188
|
-
# 1. 转换间距值
|
|
189
|
-
node scripts/convert-spacing-to-vars.cjs
|
|
190
|
-
|
|
191
|
-
# 2. 转换圆角和阴影
|
|
192
|
-
node scripts/convert-to-standard-vars.js
|
|
193
|
-
|
|
194
|
-
# 3. 转换颜色值
|
|
195
|
-
node scripts/convert-colors-to-vars.cjs
|
|
196
|
-
```
|
|
1
|
+
# 颜色值转换工具使用说明
|
|
2
|
+
|
|
3
|
+
## 功能说明
|
|
4
|
+
|
|
5
|
+
该脚本将项目中硬编码的十六进制颜色值转换为标准的 CSS 变量引用。
|
|
6
|
+
|
|
7
|
+
## 颜色映射规则
|
|
8
|
+
|
|
9
|
+
基于项目中的 `src/ui/client/src/styles/variables.scss` 定义:
|
|
10
|
+
|
|
11
|
+
### 主色调
|
|
12
|
+
- `#409eff` → `var(--color-primary)`
|
|
13
|
+
- `#5a67d8`, `#66b1ff` → `var(--color-primary-light)`
|
|
14
|
+
- `#337ecc` → `var(--color-primary-dark)`
|
|
15
|
+
|
|
16
|
+
### 成功色
|
|
17
|
+
- `#67c23a` → `var(--color-success)`
|
|
18
|
+
- `#10b981` → `var(--color-success-light)`
|
|
19
|
+
|
|
20
|
+
### 警告色
|
|
21
|
+
- `#e6a23c` → `var(--color-warning)`
|
|
22
|
+
- `#f59e0b` → `var(--color-warning-light)`
|
|
23
|
+
|
|
24
|
+
### 危险色
|
|
25
|
+
- `#f56c6c` → `var(--color-danger)`
|
|
26
|
+
- `#ef4444` → `var(--color-danger-light)`
|
|
27
|
+
- `#dc2626` → `var(--color-danger-dark)`
|
|
28
|
+
|
|
29
|
+
### 信息色
|
|
30
|
+
- `#909399` → `var(--color-info)`
|
|
31
|
+
- `#8b5cf6` → `var(--color-info-light)`
|
|
32
|
+
|
|
33
|
+
### 文字颜色
|
|
34
|
+
- `#303133` → `var(--text-primary)`
|
|
35
|
+
- `#606266` → `var(--text-secondary)`
|
|
36
|
+
- `#909399` → `var(--text-tertiary)`
|
|
37
|
+
- `#c0c4cc`, `#a8abb2` → `var(--text-placeholder)`
|
|
38
|
+
|
|
39
|
+
### Git 状态颜色
|
|
40
|
+
- `#10b981` → `var(--git-status-added)`
|
|
41
|
+
- `#f59e0b` → `var(--git-status-modified)`
|
|
42
|
+
- `#ef4444` → `var(--git-status-deleted)`
|
|
43
|
+
- `#8b5cf6` → `var(--git-status-untracked)`
|
|
44
|
+
|
|
45
|
+
## 使用方法
|
|
46
|
+
|
|
47
|
+
### 预览模式(推荐先运行)
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# 预览将要进行的更改,不修改文件
|
|
51
|
+
node scripts/convert-colors-to-vars.cjs --dry-run
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 实际应用
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# 应用更改到文件
|
|
58
|
+
node scripts/convert-colors-to-vars.cjs
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 转换示例
|
|
62
|
+
|
|
63
|
+
**转换前:**
|
|
64
|
+
```vue
|
|
65
|
+
<style>
|
|
66
|
+
.button {
|
|
67
|
+
background: #409eff;
|
|
68
|
+
color: #ffffff;
|
|
69
|
+
border: 1px solid #66b1ff;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.success-button {
|
|
73
|
+
background: #67c23a;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.text {
|
|
77
|
+
color: #303133;
|
|
78
|
+
}
|
|
79
|
+
</style>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**转换后:**
|
|
83
|
+
```vue
|
|
84
|
+
<style>
|
|
85
|
+
.button {
|
|
86
|
+
background: var(--color-primary);
|
|
87
|
+
color: var(--color-white);
|
|
88
|
+
border: 1px solid var(--color-primary-light);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.success-button {
|
|
92
|
+
background: var(--color-success);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.text {
|
|
96
|
+
color: var(--text-primary);
|
|
97
|
+
}
|
|
98
|
+
</style>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 支持的文件类型
|
|
102
|
+
|
|
103
|
+
- `.vue` - Vue 单文件组件
|
|
104
|
+
- `.scss` - Sass 样式文件
|
|
105
|
+
- `.css` - 纯 CSS 文件
|
|
106
|
+
|
|
107
|
+
## 跳过的文件
|
|
108
|
+
|
|
109
|
+
脚本会自动跳过以下文件(这些文件定义了变量本身):
|
|
110
|
+
- `variables.scss`
|
|
111
|
+
- `dark-theme.scss`
|
|
112
|
+
|
|
113
|
+
同时自动跳过以下目录:
|
|
114
|
+
- `node_modules`
|
|
115
|
+
- `.git`
|
|
116
|
+
- `dist`
|
|
117
|
+
|
|
118
|
+
## 输出报告
|
|
119
|
+
|
|
120
|
+
执行完成后会显示详细的统计报告:
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
📊 转换统计报告
|
|
124
|
+
============================================================
|
|
125
|
+
总文件数: 150
|
|
126
|
+
修改文件数: 42
|
|
127
|
+
总替换次数: 289
|
|
128
|
+
|
|
129
|
+
📋 替换详情:
|
|
130
|
+
#409eff => var(--color-primary): 78 次
|
|
131
|
+
#67c23a => var(--color-success): 45 次
|
|
132
|
+
#f56c6c => var(--color-danger): 32 次
|
|
133
|
+
...
|
|
134
|
+
|
|
135
|
+
⚠️ 未映射的颜色(需要手动检查):
|
|
136
|
+
#f8faff
|
|
137
|
+
#eef4ff
|
|
138
|
+
...
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## 注意事项
|
|
142
|
+
|
|
143
|
+
1. **备份建议**:运行脚本前建议先使用 `--dry-run` 参数预览更改
|
|
144
|
+
2. **Git 提交**:建议在运行前提交当前代码,方便回滚
|
|
145
|
+
3. **未映射颜色**:脚本会列出未映射的颜色,需要手动检查这些颜色是否需要添加到映射表
|
|
146
|
+
4. **特殊颜色**:某些渐变色或特殊效果的颜色可能需要保留原值
|
|
147
|
+
5. **rgba 颜色**:当前脚本仅处理十六进制颜色值,rgba 格式需要手动处理
|
|
148
|
+
|
|
149
|
+
## 优势
|
|
150
|
+
|
|
151
|
+
使用 CSS 变量替代硬编码颜色的好处:
|
|
152
|
+
|
|
153
|
+
1. **统一管理**:所有颜色在 `variables.scss` 中统一定义
|
|
154
|
+
2. **主题切换**:轻松实现深色主题等样式变体
|
|
155
|
+
3. **易于维护**:修改变量值即可全局更新
|
|
156
|
+
4. **语义化**:变量名更具可读性(如 `--color-success` vs `#67c23a`)
|
|
157
|
+
5. **一致性**:确保整个项目使用统一的配色方案
|
|
158
|
+
|
|
159
|
+
## 扩展映射表
|
|
160
|
+
|
|
161
|
+
如果发现新的颜色值需要映射,编辑脚本中的 `COLOR_MAP` 对象:
|
|
162
|
+
|
|
163
|
+
```javascript
|
|
164
|
+
const COLOR_MAP = {
|
|
165
|
+
// 添加新的映射
|
|
166
|
+
'#your-color': 'var(--your-variable)',
|
|
167
|
+
// ...
|
|
168
|
+
};
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## 回滚方法
|
|
172
|
+
|
|
173
|
+
如果需要回滚更改:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# 如果还未提交
|
|
177
|
+
git checkout -- src/
|
|
178
|
+
|
|
179
|
+
# 如果已提交
|
|
180
|
+
git revert <commit-hash>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## 与其他脚本配合
|
|
184
|
+
|
|
185
|
+
该脚本可以与其他样式标准化脚本配合使用:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
# 1. 转换间距值
|
|
189
|
+
node scripts/convert-spacing-to-vars.cjs
|
|
190
|
+
|
|
191
|
+
# 2. 转换圆角和阴影
|
|
192
|
+
node scripts/convert-to-standard-vars.js
|
|
193
|
+
|
|
194
|
+
# 3. 转换颜色值
|
|
195
|
+
node scripts/convert-colors-to-vars.cjs
|
|
196
|
+
```
|