template-syncer 1.1.3 → 1.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/README.md CHANGED
@@ -3,85 +3,56 @@
3
3
  智能模板同步工具,让你的项目与模板仓库保持同步。
4
4
 
5
5
  <a href="https://github.com/iceywu/template-syncer">
6
- <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/iceywu/template-syncer?logo=github&color=%234d80f0&link=https%3A%2F%2Fgithub.com%2iceywu%2Ftemplate-syncer">
6
+ <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/iceywu/template-syncer?logo=github&color=%234d80f0">
7
7
  </a>
8
8
  <a href="https://www.npmjs.com/package/template-syncer">
9
- <img alt="npm" src="https://img.shields.io/npm/v/template-syncer?logo=npm&color=%234d80f0&link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Ftemplate-syncer">
9
+ <img alt="npm" src="https://img.shields.io/npm/v/template-syncer?logo=npm&color=%234d80f0">
10
10
  </a>
11
11
  <a href="https://www.npmjs.com/package/template-syncer">
12
- <img alt="npm" src="https://img.shields.io/npm/dw/template-syncer?logo=npm&link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Ftemplate-syncer">
12
+ <img alt="npm downloads" src="https://img.shields.io/npm/dw/template-syncer?logo=npm">
13
13
  </a>
14
14
 
15
- ## 特性
15
+ ## 特性
16
16
 
17
- - 🚀 **智能同步** - 自动检测并同步模板更新
18
- - 🌍 **跨平台** - 完美支持 Windows/macOS/Linux
19
- - 📦 **智能合并** - package.json 等配置文件智能合并
20
- - 🎯 **自动分类** - 基于 glob 模式的智能文件分类
21
- - 🔌 **可扩展** - 支持自定义分类规则和合并策略
22
- - 💾 **安全备份** - 操作前自动创建 Git 备份
17
+ - 🦀 **Rust 加速** - 核心文件扫描和差异比较由 Rust 原生模块驱动,并行处理,大型项目提速显著
18
+ - 🚀 **智能同步** - 自动检测并同步模板更新,支持四种运行模式
19
+ - 📦 **智能合并** - `package.json`、`tsconfig.json` 等配置文件深度合并,不覆盖你的自定义内容
20
+ - 🎯 **自动分类** - 基于 glob 的文件分类系统,变更一目了然
23
21
  - 🌿 **多分支** - 支持从任意分支同步
22
+ - 💾 **安全备份** - 操作前自动 `git stash` 备份
23
+ - � **跨平台** - Windows / macOS / Linux
24
24
 
25
- ## 📦 安装
25
+ ## 安装
26
26
 
27
27
  ```bash
28
28
  pnpm add -g template-syncer
29
- # 或
30
- npm install -g template-syncer
31
29
  ```
32
30
 
33
- ## ⚡ 快速使用 (npx)
31
+ ## 快速开始
34
32
 
35
- 无需安装,直接使用:
33
+ 无需安装,直接用 npx:
36
34
 
37
35
  ```bash
38
- # 交互式同步
39
- npx template-syncer
40
-
41
- # 指定模板仓库
42
- npx template-syncer -r https://github.com/user/template.git
43
-
44
- # 指定分支
45
- npx template-syncer -r https://github.com/user/template.git -b dev
46
-
47
- # 初始化配置
48
- npx template-syncer --init
49
-
50
- # 预览差异
51
- npx template-syncer --preview
36
+ npx template-syncer --preview -r https://github.com/user/template.git
52
37
  ```
53
38
 
54
- ## 🚀 使用方法
55
-
56
- ### 基本用法
39
+ ## 使用
57
40
 
58
41
  ```bash
59
- # 交互式同步
60
- syn
61
-
62
- # 指定模板仓库
63
- syn -r https://github.com/user/template.git
64
-
65
- # 指定分支
66
- syn -r https://github.com/user/template.git -b dev
67
-
68
- # 详细输出
69
- syn -v
70
- ```
71
-
72
- ### 运行模式
73
-
74
- ```bash
75
- syn # 交互式同步 (默认)
76
- syn --init # 初始化配置
77
- syn --batch # 批量处理模式
78
- syn --preview # 预览差异
42
+ syn # 交互式同步(默认)
43
+ syn --init # 初始化配置文件
44
+ syn --preview # 预览差异,不修改任何文件
45
+ syn --batch # 按优先级分组选择
79
46
  syn --smart # 智能推荐模式
47
+
48
+ syn -r <url> # 指定模板仓库
49
+ syn -b <branch> # 指定分支
50
+ syn -v # 详细输出
80
51
  ```
81
52
 
82
- ### 配置文件
53
+ ## 配置文件
83
54
 
84
- 运行 `syn --init` 创建配置文件 `.template-sync.json`:
55
+ 运行 `syn --init` 生成 `.template-sync.json`:
85
56
 
86
57
  ```json
87
58
  {
@@ -94,37 +65,21 @@ syn --smart # 智能推荐模式
94
65
  "protectPatterns": ["src/local/**", "*.local.*"],
95
66
  "autoBackup": true,
96
67
  "defaultMergeStrategy": "overwrite"
97
- },
98
- "lastSync": "2024-01-01T00:00:00.000Z"
68
+ }
99
69
  }
100
70
  ```
101
71
 
102
- ### 同步规则 (rules)
72
+ ### rules 选项
103
73
 
104
74
  | 选项 | 类型 | 默认值 | 说明 |
105
75
  |------|------|--------|------|
106
- | `deleteOrphans` | boolean | `false` | 是否删除本地独有文件 |
107
- | `deletePatterns` | string[] | `[]` | 要删除的文件模式 (glob) |
108
- | `protectPatterns` | string[] | `[]` | 保护不被删除的文件模式 |
109
- | `autoBackup` | boolean | `true` | 同步前自动备份 |
76
+ | `deleteOrphans` | boolean | `false` | 删除本地独有文件 |
77
+ | `deletePatterns` | string[] | `[]` | 要删除的文件 glob 模式 |
78
+ | `protectPatterns` | string[] | `[]` | 保护不被删除的文件 |
79
+ | `autoBackup` | boolean | `true` | 同步前自动 git stash |
110
80
  | `defaultMergeStrategy` | string | `"overwrite"` | 默认合并策略 |
111
81
 
112
- **示例:删除本地独有的 Swift 文件**
113
-
114
- ```json
115
- {
116
- "rules": {
117
- "deleteOrphans": true,
118
- "deletePatterns": ["**/*.swift"],
119
- "protectPatterns": ["src/local/**"]
120
- }
121
- }
122
- ```
123
- ```
124
-
125
- ## 🔧 高级用法
126
-
127
- ### 编程式使用
82
+ ## 编程式使用
128
83
 
129
84
  ```typescript
130
85
  import { TemplateSyncer } from 'template-syncer';
@@ -132,24 +87,17 @@ import { TemplateSyncer } from 'template-syncer';
132
87
  const syncer = new TemplateSyncer({
133
88
  repo: 'https://github.com/user/template.git',
134
89
  branch: 'main',
135
- verbose: true,
136
- // 自定义忽略模式
137
90
  ignore: ['*.local', 'secrets/**'],
138
- // 自定义分类规则
139
91
  categories: [
140
- { match: '**/custom/*.ts', category: '自定义模块', icon: '🎯', priority: 100 }
92
+ { match: '**/api/*.ts', category: 'API 模块', icon: '🔌', priority: 100 }
141
93
  ],
142
- // 自定义合并策略
143
94
  mergers: {
144
95
  'config.json': 'smart',
145
96
  'README.md': 'skip'
146
97
  },
147
- // 同步规则
148
98
  rules: {
149
99
  deleteOrphans: true,
150
- deletePatterns: ['src/deprecated/**'],
151
- protectPatterns: ['src/local/**'],
152
- autoBackup: true
100
+ protectPatterns: ['src/local/**']
153
101
  }
154
102
  });
155
103
 
@@ -160,42 +108,10 @@ await syncer.sync();
160
108
 
161
109
  | 策略 | 说明 |
162
110
  |------|------|
163
- | `overwrite` | 直接覆盖 (默认) |
164
- | `skip` | 跳过不处理 |
165
- | `smart` | 智能合并 (JSON 文件) |
166
- | `ask` | 询问用户 |
167
-
168
- ### 自定义分类规则
169
-
170
- ```typescript
171
- const syncer = new TemplateSyncer({
172
- categories: [
173
- // 高优先级规则
174
- { match: '**/api/*.ts', category: 'API 模块', icon: '🔌', priority: 100 },
175
- // 低优先级规则
176
- { match: '**/*.ts', category: 'TypeScript', icon: '🔷', priority: 10 }
177
- ]
178
- });
179
- ```
180
-
181
- ## 📁 支持的文件类型
182
-
183
- 工具会自动识别并分类各种文件:
184
-
185
- - **项目配置**: package.json, Cargo.toml, go.mod 等
186
- - **构建工具**: vite.config.*, webpack.config.* 等
187
- - **代码质量**: .eslintrc*, .prettierrc* 等
188
- - **框架配置**: nuxt.config.*, next.config.* 等
189
- - **容器化**: Dockerfile, docker-compose.yml 等
190
- - **CI/CD**: .github/workflows/*, .gitlab-ci.yml 等
191
- - **各种编程语言**: .ts, .js, .py, .go, .rs, .java 等
192
-
193
- ## 🛡️ 安全性
194
-
195
- - **Git 备份**: 操作前自动创建 stash 备份
196
- - **交互确认**: 每次操作都需要用户确认
197
- - **差异预览**: 可以先预览再决定是否应用
111
+ | `overwrite` | 直接覆盖(默认) |
112
+ | `skip` | 跳过 |
113
+ | `smart` | 深度合并(JSON |
198
114
 
199
- ## 📄 许可证
115
+ ## License
200
116
 
201
- [MIT License](./LICENSE)
117
+ [MIT](./LICENSE)
package/lib/index.d.ts CHANGED
@@ -2,4 +2,3 @@ export { TemplateSyncer } from './syncer';
2
2
  export type { FileInfo, FileChange, SyncerOptions, SyncConfig, SyncRules, CategoryRule, MergeStrategy, BatchResult, Recommendation } from './types';
3
3
  export { platform, Categorizer, Merger, Git, Scanner } from './utils';
4
4
  export { prompts, logger } from './ui';
5
- //# sourceMappingURL=index.d.ts.map
package/lib/index.js CHANGED
@@ -14,4 +14,3 @@ Object.defineProperty(exports, "Scanner", { enumerable: true, get: function () {
14
14
  var ui_1 = require("./ui");
15
15
  Object.defineProperty(exports, "prompts", { enumerable: true, get: function () { return ui_1.prompts; } });
16
16
  Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return ui_1.logger; } });
17
- //# sourceMappingURL=index.js.map
package/lib/package.json CHANGED
@@ -1,61 +1,3 @@
1
- {
2
- "name": "template-syncer",
3
- "version": "1.1.3",
4
- "description": "智能模板同步工具 - 让你的项目与模板仓库保持同步,支持智能合并、差异对比和交互式更新",
5
- "main": "lib/index.js",
6
- "types": "lib/index.d.ts",
7
- "bin": {
8
- "syn": "bin/syn.js"
9
- },
10
- "scripts": {
11
- "build": "tsc && node scripts/post-build.js",
12
- "test": "node test/run-tests.js",
13
- "test:setup": "node test/setup.js",
14
- "test:cleanup": "node test/setup.js cleanup",
15
- "test:reset": "node test/setup.js reset",
16
- "test:manual": "node test/manual-test.js",
17
- "start": "node bin/syn.js",
18
- "dev": "pnpm build && node bin/syn.js --verbose",
19
- "dev:watch": "tsc --watch",
20
- "publish:npm": "pnpm build && npm publish --registry https://registry.npmjs.org",
21
- "prepublishOnly": "pnpm build"
22
- },
23
- "keywords": [
24
- "template",
25
- "sync",
26
- "vitesse",
27
- "vue",
28
- "vite"
29
- ],
30
- "author": "IceyWu <3128006406@qq.com>",
31
- "license": "MIT",
32
- "repository": {
33
- "type": "git",
34
- "url": "https://github.com/IceyWu/template-syncer.git"
35
- },
36
- "bugs": {
37
- "url": "https://github.com/IceyWu/template-syncer/issues"
38
- },
39
- "homepage": "https://github.com/IceyWu/template-syncer#readme",
40
- "engines": {
41
- "node": ">=14.0.0"
42
- },
43
- "files": [
44
- "lib/",
45
- "bin/",
46
- "README.md",
47
- "LICENSE"
48
- ],
49
- "dependencies": {
50
- "chalk": "^4.1.2",
51
- "commander": "^14.0.0",
52
- "glob": "^11.0.0",
53
- "inquirer": "^12.0.0",
54
- "minimatch": "^10.0.0"
55
- },
56
- "devDependencies": {
57
- "@types/inquirer": "^9.0.0",
58
- "@types/node": "^22.0.0",
59
- "typescript": "^5.7.0"
60
- }
61
- }
1
+ {
2
+ "type": "commonjs"
3
+ }
package/lib/syncer.d.ts CHANGED
@@ -45,21 +45,11 @@ export declare class TemplateSyncer {
45
45
  * 主同步流程
46
46
  */
47
47
  sync(): Promise<void>;
48
- /**
49
- * 批量处理模式
50
- */
51
48
  batch(): Promise<void>;
52
49
  /**
53
50
  * 预览模式
54
51
  */
55
52
  preview(): Promise<void>;
56
- /**
57
- * 智能同步模式
58
- */
59
53
  smart(): Promise<void>;
60
- /**
61
- * 初始化配置
62
- */
63
54
  init(): Promise<void>;
64
55
  }
65
- //# sourceMappingURL=syncer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"syncer.d.ts","sourceRoot":"","sources":["../src/syncer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EAEb,UAAU,EACV,WAAW,EACX,cAAc,EAEf,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAuE;IACtF,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAY;gBAEb,OAAO,GAAE,aAAkB;IAwBvC;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAkBhC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAiCpC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAiC1C;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA2C/D;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE;IA8DhE;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkE3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B5B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB9B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2C5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAe5B"}
1
+ {"version":3,"file":"syncer.d.ts","sourceRoot":"","sources":["../src/syncer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EAEb,UAAU,EACV,WAAW,EACX,cAAc,EAEf,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAuE;IACtF,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAY;gBAEb,OAAO,GAAE,aAAkB;IAwBvC;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAkBhC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAiCpC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAiC1C;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAkC/D;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE;IA8DhE;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkE3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B5B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB9B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2C5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAe5B"}
package/lib/syncer.js CHANGED
@@ -152,32 +152,26 @@ class TemplateSyncer {
152
152
  * 应用变更
153
153
  */
154
154
  async applyChanges(changes) {
155
- const result = {
156
- success: [],
157
- skipped: [],
158
- failed: []
159
- };
155
+ const result = { success: [], skipped: [], failed: [] };
160
156
  console.log(`\n开始处理 ${changes.length} 个文件...\n`);
161
- for (const file of changes) {
157
+ // 并发处理所有文件
158
+ await Promise.allSettled(changes.map(async (file) => {
162
159
  try {
163
160
  if (file.status === 'deleted') {
164
- // 删除本地独有文件
165
161
  utils_1.platform.removeFile(file.currentPath);
166
162
  result.success.push(file.path);
167
163
  ui_1.logger.file('🗑️', file.path, '已删除');
168
164
  }
169
165
  else {
170
- // 新增或修改文件
171
166
  const targetPath = path.join(process.cwd(), file.path);
172
- const mergeResult = this.merger.merge(file.templatePath, file.currentPath, targetPath);
167
+ const mergeResult = await this.merger.merge(file.templatePath, file.currentPath, targetPath);
173
168
  if (mergeResult.success) {
174
169
  result.success.push(file.path);
175
- ui_1.logger.file(file.icon, file.path, mergeResult.message);
176
170
  }
177
171
  else {
178
172
  result.skipped.push(file.path);
179
- ui_1.logger.file(file.icon, file.path, mergeResult.message);
180
173
  }
174
+ ui_1.logger.file(file.icon, file.path, mergeResult.message);
181
175
  }
182
176
  }
183
177
  catch (error) {
@@ -185,7 +179,7 @@ class TemplateSyncer {
185
179
  result.failed.push({ path: file.path, error: message });
186
180
  ui_1.logger.file(file.icon, file.path, `失败: ${message}`);
187
181
  }
188
- }
182
+ }));
189
183
  return result;
190
184
  }
191
185
  /**
@@ -311,9 +305,6 @@ class TemplateSyncer {
311
305
  this.cleanup();
312
306
  }
313
307
  }
314
- /**
315
- * 批量处理模式
316
- */
317
308
  async batch() {
318
309
  try {
319
310
  ui_1.logger.info('🔄 批量处理模式');
@@ -324,7 +315,6 @@ class TemplateSyncer {
324
315
  return;
325
316
  }
326
317
  const recommendations = this.generateRecommendations(changes);
327
- ui_1.logger.recommendations(recommendations);
328
318
  const selected = await ui_1.prompts.selectRecommendations(recommendations);
329
319
  const files = selected.flatMap(r => r.files);
330
320
  if (files.length > 0) {
@@ -357,9 +347,6 @@ class TemplateSyncer {
357
347
  this.cleanup();
358
348
  }
359
349
  }
360
- /**
361
- * 智能同步模式
362
- */
363
350
  async smart() {
364
351
  try {
365
352
  ui_1.logger.info('🤖 智能同步模式');
@@ -370,36 +357,20 @@ class TemplateSyncer {
370
357
  return;
371
358
  }
372
359
  const recommendations = this.generateRecommendations(changes);
373
- const highPriority = recommendations.filter(r => r.priority === 'high');
374
- if (highPriority.length > 0) {
375
- console.log('\n🔴 发现高优先级更新:');
376
- for (const rec of highPriority) {
377
- console.log(` • ${rec.title}: ${rec.files.length} 个文件`);
378
- }
379
- const autoApply = await ui_1.prompts.confirm('是否自动应用高优先级更新?');
380
- if (autoApply) {
381
- const files = highPriority.flatMap(r => r.files);
360
+ const selected = await ui_1.prompts.selectRecommendations(recommendations);
361
+ const files = selected.flatMap(r => r.files);
362
+ if (files.length > 0) {
363
+ const confirmed = await ui_1.prompts.confirm(`确定要处理 ${files.length} 个文件吗?`);
364
+ if (confirmed) {
382
365
  const result = await this.applyChanges(files);
383
366
  ui_1.logger.summary(result);
384
367
  }
385
368
  }
386
- const others = recommendations.filter(r => r.priority !== 'high');
387
- if (others.length > 0) {
388
- console.log('\n其他可选更新:');
389
- for (const rec of others) {
390
- const icon = rec.priority === 'medium' ? '🟡' : '🟢';
391
- console.log(` ${icon} ${rec.title}: ${rec.files.length} 个文件`);
392
- }
393
- console.log('\n💡 使用 --batch 模式可以手动选择这些更新');
394
- }
395
369
  }
396
370
  finally {
397
371
  this.cleanup();
398
372
  }
399
373
  }
400
- /**
401
- * 初始化配置
402
- */
403
374
  async init() {
404
375
  ui_1.logger.info('🔧 初始化配置向导\n');
405
376
  const answers = await ui_1.prompts.initConfig();
@@ -414,4 +385,3 @@ class TemplateSyncer {
414
385
  }
415
386
  }
416
387
  exports.TemplateSyncer = TemplateSyncer;
417
- //# sourceMappingURL=syncer.js.map
package/lib/syncer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"syncer.js","sourceRoot":"","sources":["../src/syncer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syncer.js","sourceRoot":"","sources":["../src/syncer.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -114,4 +114,3 @@ export interface Recommendation {
114
114
  description: string;
115
115
  files: FileChange[];
116
116
  }
117
- //# sourceMappingURL=types.d.ts.map
package/lib/types.js CHANGED
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
package/lib/ui/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  export { prompts } from './prompts';
2
2
  export { logger } from './logger';
3
3
  export { formatFileTree, formatGroupedTree } from './tree';
4
- //# sourceMappingURL=index.d.ts.map
package/lib/ui/index.js CHANGED
@@ -8,4 +8,3 @@ Object.defineProperty(exports, "logger", { enumerable: true, get: function () {
8
8
  var tree_1 = require("./tree");
9
9
  Object.defineProperty(exports, "formatFileTree", { enumerable: true, get: function () { return tree_1.formatFileTree; } });
10
10
  Object.defineProperty(exports, "formatGroupedTree", { enumerable: true, get: function () { return tree_1.formatGroupedTree; } });
11
- //# sourceMappingURL=index.js.map
@@ -1,26 +1,10 @@
1
1
  import type { BatchResult } from '../types';
2
- /**
3
- * 日志工具
4
- */
5
2
  export declare const logger: {
6
- info(message: string): void;
7
- success(message: string): void;
8
- warn(message: string): void;
9
- error(message: string): void;
10
- step(message: string): void;
11
- file(icon: string, path: string, status: string): void;
12
- /**
13
- * 显示操作摘要
14
- */
3
+ info: (msg: string) => void;
4
+ success: (msg: string) => void;
5
+ warn: (msg: string) => void;
6
+ error: (msg: string) => void;
7
+ step: (msg: string) => void;
8
+ file(icon: string, filePath: string, status: string): void;
15
9
  summary(result: BatchResult): void;
16
- /**
17
- * 显示推荐列表
18
- */
19
- recommendations(recs: Array<{
20
- priority: string;
21
- title: string;
22
- description: string;
23
- files: unknown[];
24
- }>): void;
25
10
  };
26
- //# sourceMappingURL=logger.d.ts.map
package/lib/ui/logger.js CHANGED
@@ -2,59 +2,31 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.logger = void 0;
4
4
  const chalk = require('chalk');
5
- /**
6
- * 日志工具
7
- */
8
5
  exports.logger = {
9
- info(message) {
10
- console.log(chalk.blue(message));
6
+ info: (msg) => console.log(chalk.blue(msg)),
7
+ success: (msg) => console.log(chalk.green(`✅ ${msg}`)),
8
+ warn: (msg) => console.log(chalk.yellow(`⚠️ ${msg}`)),
9
+ error: (msg) => console.log(chalk.red(`❌ ${msg}`)),
10
+ step: (msg) => console.log(chalk.cyan(`▶ ${msg}`)),
11
+ file(icon, filePath, status) {
12
+ const colorFn = status === '已删除' ? chalk.red
13
+ : status === '已创建' ? chalk.green
14
+ : status === '已跳过' ? chalk.gray
15
+ : status.startsWith('失败') ? chalk.red
16
+ : chalk.yellow;
17
+ console.log(` ${icon} ${filePath} ${colorFn(status)}`);
11
18
  },
12
- success(message) {
13
- console.log(chalk.green(`✅ ${message}`));
14
- },
15
- warn(message) {
16
- console.log(chalk.yellow(`⚠️ ${message}`));
17
- },
18
- error(message) {
19
- console.log(chalk.red(`❌ ${message}`));
20
- },
21
- step(message) {
22
- console.log(`📋 ${message}`);
23
- },
24
- file(icon, path, status) {
25
- console.log(`${icon} ${path} - ${status}`);
26
- },
27
- /**
28
- * 显示操作摘要
29
- */
30
19
  summary(result) {
31
- console.log('\n' + '='.repeat(50));
32
- console.log('📊 操作摘要');
33
- console.log('='.repeat(50));
34
- console.log(`✅ 成功: ${result.success.length} 个文件`);
35
- result.success.forEach(f => console.log(` • ${f}`));
36
- if (result.skipped.length > 0) {
37
- console.log(`⏭️ 跳过: ${result.skipped.length} 个文件`);
38
- result.skipped.forEach(f => console.log(` • ${f}`));
39
- }
20
+ const sep = chalk.gray(''.repeat(48));
21
+ console.log(`\n${sep}`);
22
+ if (result.success.length > 0)
23
+ console.log(chalk.green(`✅ 成功 ${result.success.length} 个`));
24
+ if (result.skipped.length > 0)
25
+ console.log(chalk.gray(`⏭ 跳过 ${result.skipped.length} 个`));
40
26
  if (result.failed.length > 0) {
41
- console.log(`❌ 失败: ${result.failed.length} 个文件`);
42
- result.failed.forEach(f => console.log(` • ${f.path}: ${f.error}`));
43
- }
44
- console.log('='.repeat(50) + '\n');
45
- },
46
- /**
47
- * 显示推荐列表
48
- */
49
- recommendations(recs) {
50
- console.log('\n📊 批量处理推荐:\n');
51
- for (const rec of recs) {
52
- const icon = rec.priority === 'high' ? '🔴' : rec.priority === 'medium' ? '🟡' : '🟢';
53
- console.log(`${icon} ${rec.title}`);
54
- console.log(` ${rec.description}`);
55
- console.log(` 文件数: ${rec.files.length}`);
56
- console.log('');
27
+ console.log(chalk.red(`❌ 失败 ${result.failed.length} 个`));
28
+ result.failed.forEach(f => console.log(chalk.red(` • ${f.path}: ${f.error}`)));
57
29
  }
30
+ console.log(`${sep}\n`);
58
31
  }
59
32
  };
60
- //# sourceMappingURL=logger.js.map