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.
@@ -1 +1 @@
1
- {"version":3,"file":"merger.js","sourceRoot":"","sources":["../../src/utils/merger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merger.js","sourceRoot":"","sources":["../../src/utils/merger.ts"],"names":[],"mappings":"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"}
@@ -29,9 +29,13 @@ export declare const platform: {
29
29
  */
30
30
  writeFile(filePath: string, content: string): void;
31
31
  /**
32
- * 读取 JSON 文件
32
+ * 读取 JSON 文件 (同步)
33
33
  */
34
34
  readJson<T = unknown>(filePath: string): T | null;
35
+ /**
36
+ * 读取 JSON 文件 (异步)
37
+ */
38
+ readJsonAsync<T = unknown>(filePath: string): Promise<T | null>;
35
39
  /**
36
40
  * 写入 JSON 文件
37
41
  */
@@ -41,4 +45,3 @@ export declare const platform: {
41
45
  */
42
46
  isBinary(filePath: string): boolean;
43
47
  };
44
- //# sourceMappingURL=platform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,QAAQ;IACnB,kBAAkB;;IAGlB;;OAEG;mBACY,MAAM,GAAG,IAAI;IAkB5B;;OAEG;yBACkB,MAAM,GAAG,IAAI;IAkBlC;;OAEG;mBACY,MAAM,GAAG,IAAI;IAM5B;;OAEG;kBACW,MAAM,QAAQ,MAAM,GAAG,IAAI;IAKzC;;OAEG;uBACgB,MAAM,GAAG,MAAM;IAIlC;;OAEG;wBACiB,MAAM,WAAW,MAAM,GAAG,IAAI;IAKlD;;OAEG;aACM,CAAC,sBAAsB,MAAM,GAAG,CAAC,GAAG,IAAI;IAQjD;;OAEG;wBACiB,MAAM,QAAQ,OAAO,GAAG,IAAI;IAIhD;;OAEG;uBACgB,MAAM,GAAG,OAAO;CA+BpC,CAAC"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,QAAQ;IACnB,kBAAkB;;IAGlB;;OAEG;mBACY,MAAM,GAAG,IAAI;IAkB5B;;OAEG;yBACkB,MAAM,GAAG,IAAI;IAkBlC;;OAEG;mBACY,MAAM,GAAG,IAAI;IAM5B;;OAEG;kBACW,MAAM,QAAQ,MAAM,GAAG,IAAI;IAKzC;;OAEG;uBACgB,MAAM,GAAG,MAAM;IAIlC;;OAEG;wBACiB,MAAM,WAAW,MAAM,GAAG,IAAI;IAKlD;;OAEG;aACM,CAAC,sBAAsB,MAAM,GAAG,CAAC,GAAG,IAAI;IAQjD;;OAEG;kBACiB,CAAC,sBAAsB,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IASrE;;OAEG;wBACiB,MAAM,QAAQ,OAAO,GAAG,IAAI;IAIhD;;OAEG;uBACgB,MAAM,GAAG,OAAO;CA+BpC,CAAC"}
@@ -116,7 +116,7 @@ exports.platform = {
116
116
  fs.writeFileSync(filePath, content, 'utf8');
117
117
  },
118
118
  /**
119
- * 读取 JSON 文件
119
+ * 读取 JSON 文件 (同步)
120
120
  */
121
121
  readJson(filePath) {
122
122
  try {
@@ -126,6 +126,18 @@ exports.platform = {
126
126
  return null;
127
127
  }
128
128
  },
129
+ /**
130
+ * 读取 JSON 文件 (异步)
131
+ */
132
+ async readJsonAsync(filePath) {
133
+ try {
134
+ const content = await fs.promises.readFile(filePath, 'utf8');
135
+ return JSON.parse(content);
136
+ }
137
+ catch {
138
+ return null;
139
+ }
140
+ },
129
141
  /**
130
142
  * 写入 JSON 文件
131
143
  */
@@ -166,4 +178,3 @@ exports.platform = {
166
178
  return false;
167
179
  }
168
180
  };
169
- //# sourceMappingURL=platform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAyC;AAEzC;;GAEG;AACU,QAAA,QAAQ,GAAG;IACtB,kBAAkB;IAClB,SAAS,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;IAEvC;;OAEG;IACH,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QAEhC,IAAI,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,UAAU;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS;gBACxB,CAAC,CAAC,gBAAgB,GAAG,GAAG;gBACxB,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;YACtB,IAAI,CAAC;gBACH,IAAA,wBAAQ,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,QAAgB;QACzB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO;QAErC,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,UAAU;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS;gBACxB,CAAC,CAAC,cAAc,QAAQ,GAAG;gBAC3B,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC;YAC1B,IAAI,CAAC;gBACH,IAAA,wBAAQ,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,GAAW,EAAE,IAAY;QAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,QAAgB;QACvB,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAgB,EAAE,OAAe;QACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,QAAQ,CAAc,QAAgB;QACpC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAgB,EAAE,IAAa;QACvC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,QAAgB;QACvB,WAAW;QACX,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;YACzB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;YACzE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;YAChE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;YACnD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;YACzD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;YAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YACzC,SAAS,EAAE,KAAK,EAAE,QAAQ;SAC3B,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAErC,kBAAkB;QAClB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACrD,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAC;YACnC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ;QACV,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":"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"}
@@ -1,40 +1,16 @@
1
1
  import type { FileInfo, FileChange, CategoryRule } from '../types';
2
- /**
3
- * 文件扫描器
4
- */
5
2
  export declare class Scanner {
6
3
  private ignorePatterns;
7
4
  private categorizer;
8
5
  constructor(customIgnore?: string[], customCategories?: CategoryRule[]);
9
- /**
10
- * 扫描目录
11
- */
12
6
  scan(dir: string): Promise<FileInfo[]>;
13
- /**
14
- * 比较两个目录的文件差异
15
- * @param templateDir 模板目录
16
- * @param currentDir 当前目录
17
- * @param detectOrphans 是否检测本地独有文件
18
- */
19
7
  compare(templateDir: string, currentDir: string, detectOrphans?: boolean): Promise<FileChange[]>;
20
- /**
21
- * 检查文件是否有变更
22
- */
8
+ /** Rust native 实现:并行 hash 比较 */
9
+ private compareNative;
10
+ /** 纯 JS fallback 实现 */
11
+ private compareJs;
23
12
  private hasChanged;
24
- /**
25
- * 添加忽略模式
26
- */
13
+ filterOrphans(orphans: FileChange[], deletePatterns?: string[], protectPatterns?: string[]): FileChange[];
27
14
  addIgnore(pattern: string): void;
28
- /**
29
- * 添加分类规则
30
- */
31
15
  addCategory(rule: CategoryRule): void;
32
- /**
33
- * 过滤要删除的文件
34
- * @param orphans 本地独有文件列表
35
- * @param deletePatterns 要删除的模式
36
- * @param protectPatterns 要保护的模式
37
- */
38
- filterOrphans(orphans: FileChange[], deletePatterns?: string[], protectPatterns?: string[]): FileChange[];
39
16
  }
40
- //# sourceMappingURL=scanner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/utils/scanner.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA+BnE;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,cAAc,CAAW;IACjC,OAAO,CAAC,WAAW,CAAc;gBAG/B,YAAY,GAAE,MAAM,EAAO,EAC3B,gBAAgB,GAAE,YAAY,EAAO;IAMvC;;OAEG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAyC5C;;;;;OAKG;IACG,OAAO,CACX,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,aAAa,UAAQ,GACpB,OAAO,CAAC,UAAU,EAAE,CAAC;IAuDxB;;OAEG;IACH,OAAO,CAAC,UAAU;IAoBlB;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIrC;;;;;OAKG;IACH,aAAa,CACX,OAAO,EAAE,UAAU,EAAE,EACrB,cAAc,GAAE,MAAM,EAAW,EACjC,eAAe,GAAE,MAAM,EAAO,GAC7B,UAAU,EAAE;CAiBhB"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/utils/scanner.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAoCnE,qBAAa,OAAO;IAClB,OAAO,CAAC,cAAc,CAAW;IACjC,OAAO,CAAC,WAAW,CAAc;gBAErB,YAAY,GAAE,MAAM,EAAO,EAAE,gBAAgB,GAAE,YAAY,EAAO;IAKxE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAoCtC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,UAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAQpG,gCAAgC;YAClB,aAAa;IAoC3B,uBAAuB;YACT,SAAS;YAiDT,UAAU;IAoBxB,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,cAAc,GAAE,MAAM,EAAW,EAAE,eAAe,GAAE,MAAM,EAAO,GAAG,UAAU,EAAE;IASrH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAChC,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;CACtC"}
@@ -40,9 +40,13 @@ const glob_1 = require("glob");
40
40
  const minimatch_1 = require("minimatch");
41
41
  const platform_1 = require("./platform");
42
42
  const categorizer_1 = require("./categorizer");
43
- /**
44
- * 默认忽略模式
45
- */
43
+ let native = null;
44
+ try {
45
+ native = require('../../native/index');
46
+ }
47
+ catch {
48
+ // fallback to pure JS
49
+ }
46
50
  const DEFAULT_IGNORE = [
47
51
  'node_modules/**',
48
52
  '.git/**',
@@ -66,95 +70,108 @@ const DEFAULT_IGNORE = [
66
70
  '*.temp',
67
71
  '*.swp',
68
72
  '*~',
69
- '.template-sync.json' // 保护配置文件不被同步或删除
73
+ '.template-sync.json'
70
74
  ];
71
- /**
72
- * 文件扫描器
73
- */
74
75
  class Scanner {
75
76
  constructor(customIgnore = [], customCategories = []) {
76
77
  this.ignorePatterns = [...DEFAULT_IGNORE, ...customIgnore];
77
78
  this.categorizer = new categorizer_1.Categorizer(customCategories);
78
79
  }
79
- /**
80
- * 扫描目录
81
- */
82
80
  async scan(dir) {
83
- if (!fs.existsSync(dir)) {
81
+ if (!fs.existsSync(dir))
84
82
  throw new Error(`目录不存在: ${dir}`);
85
- }
86
83
  const files = await (0, glob_1.glob)('**/*', {
87
84
  cwd: dir,
88
85
  ignore: this.ignorePatterns,
89
86
  dot: true,
90
87
  nodir: true
91
88
  });
92
- const result = [];
93
- for (const file of files) {
94
- // 统一使用正斜杠,确保跨平台路径一致性
89
+ // 并发处理所有文件的 stat + 分类
90
+ const results = await Promise.allSettled(files.map(async (file) => {
95
91
  const normalizedPath = file.replace(/\\/g, '/');
96
92
  const fullPath = path.join(dir, file);
93
+ const stat = await fs.promises.stat(fullPath);
94
+ if (!stat.isFile())
95
+ return null;
96
+ const { category, icon } = this.categorizer.categorize(normalizedPath);
97
+ return {
98
+ path: normalizedPath,
99
+ fullPath,
100
+ size: stat.size,
101
+ isBinary: platform_1.platform.isBinary(fullPath),
102
+ category,
103
+ icon
104
+ };
105
+ }));
106
+ return results
107
+ .filter((r) => r.status === 'fulfilled' && r.value !== null)
108
+ .map(r => r.value)
109
+ .sort((a, b) => a.path.localeCompare(b.path));
110
+ }
111
+ async compare(templateDir, currentDir, detectOrphans = false) {
112
+ // 优先使用 Rust native 实现
113
+ if (native) {
114
+ return this.compareNative(templateDir, currentDir, detectOrphans);
115
+ }
116
+ return this.compareJs(templateDir, currentDir, detectOrphans);
117
+ }
118
+ /** Rust native 实现:并行 hash 比较 */
119
+ async compareNative(templateDir, currentDir, detectOrphans) {
120
+ const ignoreNames = ['node_modules', '.git', 'dist', 'build', '.cache', '.template-sync.json'];
121
+ const diffs = native.compareDirs(templateDir, currentDir, ignoreNames, detectOrphans);
122
+ // 并发补充 FileChange 所需的 category/icon/size 信息
123
+ const results = await Promise.allSettled(diffs.map(async (diff) => {
124
+ const isDeleted = diff.status === 'deleted';
125
+ const basePath = isDeleted ? currentDir : templateDir;
126
+ const fullPath = path.join(basePath, diff.path);
127
+ let size = 0;
97
128
  try {
98
- const stat = fs.statSync(fullPath);
99
- if (!stat.isFile())
100
- continue;
101
- const { category, icon } = this.categorizer.categorize(normalizedPath);
102
- result.push({
103
- path: normalizedPath,
104
- fullPath,
105
- size: stat.size,
106
- isBinary: platform_1.platform.isBinary(fullPath),
107
- category,
108
- icon
109
- });
129
+ size = (await fs.promises.stat(fullPath)).size;
110
130
  }
111
- catch {
112
- // 跳过无法访问的文件
113
- }
114
- }
115
- return result.sort((a, b) => a.path.localeCompare(b.path));
131
+ catch { }
132
+ const { category, icon } = this.categorizer.categorize(diff.path);
133
+ return {
134
+ path: diff.path,
135
+ fullPath,
136
+ size,
137
+ isBinary: platform_1.platform.isBinary(fullPath),
138
+ category,
139
+ icon,
140
+ status: diff.status,
141
+ templatePath: isDeleted ? '' : fullPath,
142
+ currentPath: isDeleted ? fullPath : path.join(currentDir, diff.path),
143
+ selected: diff.status !== 'deleted',
144
+ };
145
+ }));
146
+ return results
147
+ .filter((r) => r.status === 'fulfilled' && r.value !== null)
148
+ .map((r) => r.value);
116
149
  }
117
- /**
118
- * 比较两个目录的文件差异
119
- * @param templateDir 模板目录
120
- * @param currentDir 当前目录
121
- * @param detectOrphans 是否检测本地独有文件
122
- */
123
- async compare(templateDir, currentDir, detectOrphans = false) {
124
- const templateFiles = await this.scan(templateDir);
125
- const currentFiles = await this.scan(currentDir);
150
+ /** 纯 JS fallback 实现 */
151
+ async compareJs(templateDir, currentDir, detectOrphans) {
152
+ const [templateFiles, currentFiles] = await Promise.all([
153
+ this.scan(templateDir),
154
+ this.scan(currentDir)
155
+ ]);
126
156
  const currentMap = new Map(currentFiles.map(f => [f.path, f]));
127
157
  const templateMap = new Map(templateFiles.map(f => [f.path, f]));
128
- const changes = [];
129
- // 检查模板文件
130
- for (const templateFile of templateFiles) {
158
+ // 并发检查所有模板文件的变更状态
159
+ const changeResults = await Promise.allSettled(templateFiles.map(async (templateFile) => {
131
160
  const currentFile = currentMap.get(templateFile.path);
132
161
  const templatePath = templateFile.fullPath;
133
162
  const currentPath = path.join(currentDir, templateFile.path);
134
163
  if (!currentFile) {
135
- // 新文件
136
- changes.push({
137
- ...templateFile,
138
- status: 'new',
139
- templatePath,
140
- currentPath,
141
- selected: true
142
- });
164
+ return { ...templateFile, status: 'new', templatePath, currentPath, selected: true };
143
165
  }
144
- else {
145
- // 检查是否有变更
146
- if (this.hasChanged(templatePath, currentFile.fullPath)) {
147
- changes.push({
148
- ...templateFile,
149
- status: 'modified',
150
- templatePath,
151
- currentPath: currentFile.fullPath,
152
- selected: true
153
- });
154
- }
166
+ const changed = await this.hasChanged(templatePath, currentFile.fullPath);
167
+ if (changed) {
168
+ return { ...templateFile, status: 'modified', templatePath, currentPath: currentFile.fullPath, selected: true };
155
169
  }
156
- }
157
- // 检测本地独有文件(可删除)
170
+ return null;
171
+ }));
172
+ const changes = changeResults
173
+ .filter((r) => r.status === 'fulfilled' && r.value !== null)
174
+ .map(r => r.value);
158
175
  if (detectOrphans) {
159
176
  for (const currentFile of currentFiles) {
160
177
  if (!templateMap.has(currentFile.path)) {
@@ -163,67 +180,40 @@ class Scanner {
163
180
  status: 'deleted',
164
181
  templatePath: '',
165
182
  currentPath: currentFile.fullPath,
166
- selected: false // 默认不选中删除
183
+ selected: false
167
184
  });
168
185
  }
169
186
  }
170
187
  }
171
188
  return changes;
172
189
  }
173
- /**
174
- * 检查文件是否有变更
175
- */
176
- hasChanged(file1, file2) {
190
+ async hasChanged(file1, file2) {
177
191
  try {
178
- const stat1 = fs.statSync(file1);
179
- const stat2 = fs.statSync(file2);
180
- // 大小不同肯定有变更
181
- if (stat1.size !== stat2.size) {
192
+ const [stat1, stat2] = await Promise.all([
193
+ fs.promises.stat(file1),
194
+ fs.promises.stat(file2)
195
+ ]);
196
+ if (stat1.size !== stat2.size)
182
197
  return true;
183
- }
184
- // 比较内容
185
- const content1 = fs.readFileSync(file1);
186
- const content2 = fs.readFileSync(file2);
187
- return !content1.equals(content2);
198
+ const [buf1, buf2] = await Promise.all([
199
+ fs.promises.readFile(file1),
200
+ fs.promises.readFile(file2)
201
+ ]);
202
+ return !buf1.equals(buf2);
188
203
  }
189
204
  catch {
190
205
  return true;
191
206
  }
192
207
  }
193
- /**
194
- * 添加忽略模式
195
- */
196
- addIgnore(pattern) {
197
- this.ignorePatterns.push(pattern);
198
- }
199
- /**
200
- * 添加分类规则
201
- */
202
- addCategory(rule) {
203
- this.categorizer.addRule(rule);
204
- }
205
- /**
206
- * 过滤要删除的文件
207
- * @param orphans 本地独有文件列表
208
- * @param deletePatterns 要删除的模式
209
- * @param protectPatterns 要保护的模式
210
- */
211
208
  filterOrphans(orphans, deletePatterns = ['**'], protectPatterns = []) {
212
209
  return orphans.filter(file => {
213
- // 检查是否匹配保护模式
214
- const isProtected = protectPatterns.some(pattern => (0, minimatch_1.minimatch)(file.path, pattern, { dot: true, matchBase: true }));
210
+ const isProtected = protectPatterns.some(p => (0, minimatch_1.minimatch)(file.path, p, { dot: true, matchBase: true }));
215
211
  if (isProtected)
216
212
  return false;
217
- // 检查是否匹配删除模式
218
- // 特殊处理 "**" 模式,使其匹配所有文件
219
- const shouldDelete = deletePatterns.some(pattern => {
220
- if (pattern === '**')
221
- return true;
222
- return (0, minimatch_1.minimatch)(file.path, pattern, { dot: true, matchBase: true });
223
- });
224
- return shouldDelete;
213
+ return deletePatterns.some(p => p === '**' || (0, minimatch_1.minimatch)(file.path, p, { dot: true, matchBase: true }));
225
214
  });
226
215
  }
216
+ addIgnore(pattern) { this.ignorePatterns.push(pattern); }
217
+ addCategory(rule) { this.categorizer.addRule(rule); }
227
218
  }
228
219
  exports.Scanner = Scanner;
229
- //# sourceMappingURL=scanner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/utils/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/utils/scanner.ts"],"names":[],"mappings":"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"}
File without changes
@@ -0,0 +1,25 @@
1
+ const { existsSync } = require('fs')
2
+ const { join } = require('path')
3
+
4
+ // 按平台加载对应的 .node 文件
5
+ const platforms = {
6
+ 'win32-x64': 'index.win32-x64-msvc.node',
7
+ 'darwin-x64': 'index.darwin-x64.node',
8
+ 'darwin-arm64': 'index.darwin-arm64.node',
9
+ 'linux-x64': 'index.linux-x64-gnu.node',
10
+ 'linux-arm64': 'index.linux-arm64-gnu.node',
11
+ }
12
+
13
+ const key = `${process.platform === 'win32' ? 'win32' : process.platform}-${process.arch}`
14
+ const file = platforms[key]
15
+
16
+ if (!file) {
17
+ throw new Error(`Unsupported platform: ${key}`)
18
+ }
19
+
20
+ const nodePath = join(__dirname, file)
21
+ if (!existsSync(nodePath)) {
22
+ throw new Error(`Native module not found: ${nodePath}\nRun: pnpm build:native`)
23
+ }
24
+
25
+ module.exports = require(nodePath)
Binary file
package/package.json CHANGED
@@ -1,61 +1,65 @@
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
+ "name": "template-syncer",
3
+ "version": "1.2.0",
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 -e \"require('fs').writeFileSync('lib/package.json', JSON.stringify({type:'commonjs'},null,2))\"",
12
+ "build:native": "napi build --manifest-path crates/scanner/Cargo.toml --platform --release --output-dir native",
13
+ "build:all": "pnpm build:native && pnpm build",
14
+ "dev": "pnpm build && node bin/syn.js --verbose",
15
+ "dev:watch": "tsc --watch",
16
+ "start": "node bin/syn.js",
17
+ "test": "node test/run-tests.js",
18
+ "test:setup": "node test/setup.js",
19
+ "test:cleanup": "node test/setup.js cleanup",
20
+ "test:reset": "node test/setup.js reset",
21
+ "test:manual": "node test/manual-test.js",
22
+ "publish:npm": "pnpm build:all && npm publish --registry https://registry.npmjs.org",
23
+ "prepublishOnly": "pnpm build:all"
24
+ },
25
+ "keywords": [
26
+ "template",
27
+ "sync",
28
+ "vitesse",
29
+ "vue",
30
+ "vite"
31
+ ],
32
+ "author": "IceyWu <3128006406@qq.com>",
33
+ "license": "MIT",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "https://github.com/IceyWu/template-syncer.git"
37
+ },
38
+ "bugs": {
39
+ "url": "https://github.com/IceyWu/template-syncer/issues"
40
+ },
41
+ "homepage": "https://github.com/IceyWu/template-syncer#readme",
42
+ "engines": {
43
+ "node": ">=14.0.0"
44
+ },
45
+ "files": [
46
+ "lib/",
47
+ "bin/",
48
+ "native/",
49
+ "README.md",
50
+ "LICENSE"
51
+ ],
52
+ "dependencies": {
53
+ "chalk": "^4.1.2",
54
+ "commander": "^14.0.3",
55
+ "glob": "^13.0.6",
56
+ "inquirer": "^13.3.2",
57
+ "minimatch": "^10.2.4"
58
+ },
59
+ "devDependencies": {
60
+ "@napi-rs/cli": "^3.5.1",
61
+ "@types/inquirer": "^9.0.9",
62
+ "@types/node": "^25.5.0",
63
+ "typescript": "^6.0.2"
64
+ }
65
+ }