lanhu-layer-tree 1.0.0 → 1.0.2
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 +5 -2
- package/dist/formatter.d.ts.map +1 -1
- package/dist/formatter.js +34 -2
- package/dist/formatter.js.map +1 -1
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +21 -7
- package/dist/resolver.js.map +1 -1
- package/package.json +1 -1
- package/src/formatter.ts +40 -2
- package/src/resolver.ts +27 -8
package/README.md
CHANGED
|
@@ -210,12 +210,15 @@ lanhu refresh-cookie /path/to/.env
|
|
|
210
210
|
- `ImgIcon` → 提取资源名 `Icon.png`
|
|
211
211
|
- `Img_Button 拷贝 2` → 自动去除 "拷贝" 后缀
|
|
212
212
|
- `Img_Panel s9-10-10` → 九宫格参数 `s9[10,10]`
|
|
213
|
+
- `common_btn_zhuanniu - 智能对象组` → 输出为 `common_btn_zhuanniu`(去除中文后缀)
|
|
214
|
+
- `common_btn - 智能对象组 s9-3-3` → 输出为 `common_btn s9[3,3]`(保留九宫格参数)
|
|
213
215
|
|
|
214
216
|
### 过滤规则
|
|
215
217
|
- `参考图xxx` → 不导出
|
|
216
218
|
- `fexxx` → 不导出
|
|
217
|
-
-
|
|
218
|
-
- `
|
|
219
|
+
- sp 类型且以中文开头(如 `按钮图标`、`图层 3`)→ 不导出(完全过滤)
|
|
220
|
+
- sp 类型以英文开头(如 `common_btn - 智能对象组`)→ 导出但去除中文后缀
|
|
221
|
+
- `background` → 不解析 UUID(但会导出)
|
|
219
222
|
|
|
220
223
|
### 输出格式
|
|
221
224
|
|
package/dist/formatter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAsDnD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,EAAE,EACf,UAAU,GAAE,MAAe,EAC3B,WAAW,GAAE,MAAU,EACvB,YAAY,GAAE,MAAU,EACxB,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CAiOR"}
|
package/dist/formatter.js
CHANGED
|
@@ -43,6 +43,7 @@ function reverseSiblingOrder(layers) {
|
|
|
43
43
|
return result;
|
|
44
44
|
}
|
|
45
45
|
const GROUP_TYPES = new Set(['group', 'layerGroup', 'artboard', 'layerSection']);
|
|
46
|
+
const CHINESE_REGEX = /[一-鿿]/;
|
|
46
47
|
/**
|
|
47
48
|
* 将图层列表格式化为树形结构
|
|
48
49
|
*/
|
|
@@ -66,7 +67,32 @@ function formatLayersTree(layers, designName = 'Root', canvasWidth = 0, canvasHe
|
|
|
66
67
|
// 过滤掉不需要导出的图层
|
|
67
68
|
const filteredLayers = layers.filter(layer => {
|
|
68
69
|
const name = layer.name.trim();
|
|
69
|
-
|
|
70
|
+
const ltype = layer.type || '';
|
|
71
|
+
// 过滤参考图和 fe 开头的图层
|
|
72
|
+
if (name.startsWith('参考图') || name.startsWith('fe')) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
// 过滤 sp 类型且全中文的图层
|
|
76
|
+
if (ltype !== 'textLayer' && !GROUP_TYPES.has(ltype)) {
|
|
77
|
+
// 移除 Img_ 或 Img 前缀后检查
|
|
78
|
+
let checkName = name;
|
|
79
|
+
if (checkName.startsWith('Img_')) {
|
|
80
|
+
checkName = checkName.slice(4);
|
|
81
|
+
}
|
|
82
|
+
else if (checkName.startsWith('Img')) {
|
|
83
|
+
checkName = checkName.slice(3);
|
|
84
|
+
}
|
|
85
|
+
// 移除拷贝和九宫格标记
|
|
86
|
+
checkName = checkName.replace(/\s*拷贝\s*\d*/g, '').trim();
|
|
87
|
+
checkName = checkName.replace(/\s+s9-\d+-\d+/g, '').trim();
|
|
88
|
+
// 移除 " - 中文" 或 " 中文" 后缀(用于检查是否全中文)
|
|
89
|
+
checkName = checkName.replace(/\s*[-\s]+[一-鿿㐀-䶿]+.*$/g, '').trim();
|
|
90
|
+
// 如果处理后的名称为空或以中文开头,则过滤掉
|
|
91
|
+
if (!checkName || CHINESE_REGEX.test(checkName.charAt(0))) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return true;
|
|
70
96
|
});
|
|
71
97
|
// 翻转同级节点顺序
|
|
72
98
|
const reversedLayers = reverseSiblingOrder(filteredLayers);
|
|
@@ -77,8 +103,15 @@ function formatLayersTree(layers, designName = 'Root', canvasWidth = 0, canvasHe
|
|
|
77
103
|
reversedLayers.forEach((layer, idx) => {
|
|
78
104
|
const depth = layer.depth;
|
|
79
105
|
let name = layer.name;
|
|
106
|
+
const ltype = layer.type;
|
|
80
107
|
// 过滤掉名称中的"拷贝"及其后面的数字部分
|
|
81
108
|
name = name.replace(/\s*拷贝\s*\d*/g, '').trim();
|
|
109
|
+
// 对于 sp 类型图层,先移除 " - 中文" 后缀(但保留九宫格标记)
|
|
110
|
+
if (ltype !== 'textLayer' && !GROUP_TYPES.has(ltype)) {
|
|
111
|
+
// 匹配 " - 中文" 但不包括 s9 标记
|
|
112
|
+
// 例如: "common_btn - 智能对象组 s9-3-3" → "common_btn s9-3-3"
|
|
113
|
+
name = name.replace(/\s*[-\s]+[一-鿿㐀-䶿]+[^s\d]*?(?=\s+s9-|\s*$)/g, '').trim();
|
|
114
|
+
}
|
|
82
115
|
// 提取九宫格参数(如 " s9-3-3" → [3,3])
|
|
83
116
|
let s9Params = null;
|
|
84
117
|
const s9Match = name.match(/\s+s9-(\d+)-(\d+)/);
|
|
@@ -87,7 +120,6 @@ function formatLayersTree(layers, designName = 'Root', canvasWidth = 0, canvasHe
|
|
|
87
120
|
}
|
|
88
121
|
// 过滤掉九宫格标记
|
|
89
122
|
name = name.replace(/\s+s9-\d+-\d+/g, '').trim();
|
|
90
|
-
const ltype = layer.type;
|
|
91
123
|
const width = layer.width;
|
|
92
124
|
const height = layer.height;
|
|
93
125
|
const absX = layer.x;
|
package/dist/formatter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"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"}
|
package/dist/resolver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAShC,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAClD;
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAShC,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAClD;AAmED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,KAAK,EAAE,EACf,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CA2C3B;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,KAAK,EAAE,EACf,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAqD3B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACjC,SAAS,GAAG,IAAI,CAIlB"}
|
package/dist/resolver.js
CHANGED
|
@@ -76,10 +76,11 @@ function extractResourceFilename(name) {
|
|
|
76
76
|
return `${resourceName}.png`;
|
|
77
77
|
}
|
|
78
78
|
/**
|
|
79
|
-
*
|
|
79
|
+
* 收集图层中所有需要解析的资源文件名(包含图层名称和完整图层对象映射)
|
|
80
80
|
*/
|
|
81
81
|
function collectImageRefs(layers) {
|
|
82
82
|
const refs = new Set();
|
|
83
|
+
const layerMap = new Map();
|
|
83
84
|
for (const layer of layers) {
|
|
84
85
|
const name = layer.name || '';
|
|
85
86
|
const ltype = layer.type || '';
|
|
@@ -88,10 +89,15 @@ function collectImageRefs(layers) {
|
|
|
88
89
|
if (name.startsWith('参考图') || name.startsWith('fe'))
|
|
89
90
|
continue;
|
|
90
91
|
const filename = extractResourceFilename(name);
|
|
91
|
-
if (filename)
|
|
92
|
+
if (filename) {
|
|
92
93
|
refs.add(filename);
|
|
94
|
+
if (!layerMap.has(filename)) {
|
|
95
|
+
layerMap.set(filename, []);
|
|
96
|
+
}
|
|
97
|
+
layerMap.get(filename).push(layer);
|
|
98
|
+
}
|
|
93
99
|
}
|
|
94
|
-
return refs;
|
|
100
|
+
return { refs, layerMap };
|
|
95
101
|
}
|
|
96
102
|
/**
|
|
97
103
|
* 批量解析图层中的图片资源 GUID(Unity)
|
|
@@ -99,7 +105,7 @@ function collectImageRefs(layers) {
|
|
|
99
105
|
function resolveLayerAssetsUnity(layers, assetsDir) {
|
|
100
106
|
if (!assetsDir || !fs.existsSync(assetsDir))
|
|
101
107
|
return {};
|
|
102
|
-
const imageRefs = collectImageRefs(layers);
|
|
108
|
+
const { refs: imageRefs, layerMap } = collectImageRefs(layers);
|
|
103
109
|
const uuidMap = {};
|
|
104
110
|
const missingFiles = [];
|
|
105
111
|
for (const filename of imageRefs) {
|
|
@@ -125,7 +131,11 @@ function resolveLayerAssetsUnity(layers, assetsDir) {
|
|
|
125
131
|
if (missingFiles.length > 0) {
|
|
126
132
|
console.error(`\n❌ 错误:以下 ${missingFiles.length} 个资源在本地未找到:`);
|
|
127
133
|
for (const f of missingFiles.sort()) {
|
|
128
|
-
|
|
134
|
+
const layers = layerMap.get(f) || [];
|
|
135
|
+
console.error(`\n 资源文件: ${f}`);
|
|
136
|
+
for (const layer of layers) {
|
|
137
|
+
console.error(` 图层完整信息:\n${JSON.stringify(layer, null, 2)}`);
|
|
138
|
+
}
|
|
129
139
|
}
|
|
130
140
|
console.error(`\n请确保资源文件存在于目录:${assetsDir}`);
|
|
131
141
|
throw new Error(`缺失 ${missingFiles.length} 个资源文件`);
|
|
@@ -142,7 +152,7 @@ function resolveLayerAssetsUnity(layers, assetsDir) {
|
|
|
142
152
|
function resolveLayerAssetsCocos(layers, assetsDir) {
|
|
143
153
|
if (!assetsDir || !fs.existsSync(assetsDir))
|
|
144
154
|
return {};
|
|
145
|
-
const imageRefs = collectImageRefs(layers);
|
|
155
|
+
const { refs: imageRefs, layerMap } = collectImageRefs(layers);
|
|
146
156
|
const uuidMap = {};
|
|
147
157
|
const missingFiles = [];
|
|
148
158
|
for (const filename of imageRefs) {
|
|
@@ -177,7 +187,11 @@ function resolveLayerAssetsCocos(layers, assetsDir) {
|
|
|
177
187
|
if (missingFiles.length > 0) {
|
|
178
188
|
console.error(`\n❌ 错误:以下 ${missingFiles.length} 个资源在本地未找到:`);
|
|
179
189
|
for (const f of missingFiles.sort()) {
|
|
180
|
-
|
|
190
|
+
const layers = layerMap.get(f) || [];
|
|
191
|
+
console.error(`\n 资源文件: ${f}`);
|
|
192
|
+
for (const layer of layers) {
|
|
193
|
+
console.error(` 图层完整信息:\n${JSON.stringify(layer, null, 2)}`);
|
|
194
|
+
}
|
|
181
195
|
}
|
|
182
196
|
console.error(`\n请确保资源文件存在于目录:${assetsDir}`);
|
|
183
197
|
throw new Error(`缺失 ${missingFiles.length} 个资源文件`);
|
package/dist/resolver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwFH,0DA8CC;AASD,0DAwDC;AAKD,oDAOC;AAjND,uCAAyB;AAGzB,qCAMkB;AASlB,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,WAAW;IACX,OAAO;IACP,YAAY;IACZ,UAAU;IACV,cAAc;CACf,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,OAAO,CAAC;AAE9B;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,IAAY;IAC3C,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;SAAM,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1C,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/D,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEjE,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IAE7D,OAAO,GAAG,YAAY,MAAM,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,MAAe;IAIvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAE/B,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAE9D,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC7B,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,MAAe,EACf,SAAiB;IAEjB,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAA,uBAAc,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,KAAK,OAAO,CAAC;QACjC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAA,sBAAa,EAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,QAAQ,CAAC,GAAG;oBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC;gBACF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,UAAU,QAAQ,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,SAAS,EAAE,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,aAAa,YAAY,CAAC,MAAM,aAAa,CAAC,CAAC;QAC7D,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,MAAM,YAAY,CAAC,MAAM,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CACrC,MAAe,EACf,SAAiB;IAEjB,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAA,uBAAc,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,KAAK,OAAO,CAAC;QAEjC,cAAc;QACd,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAA,4BAAmB,EAAC,QAAQ,CAAC,CAAC;YAC1C,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,UAAU,QAAQ,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC9D,SAAS;YACX,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,CAAC;YAClC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,cAAc,QAAQ,WAAW,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,aAAa,YAAY,CAAC,MAAM,aAAa,CAAC,CAAC;QAC7D,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,MAAM,YAAY,CAAC,MAAM,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,SAAiB,EACjB,OAAkC;IAElC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;AACnC,CAAC"}
|
package/package.json
CHANGED
package/src/formatter.ts
CHANGED
|
@@ -50,6 +50,7 @@ function reverseSiblingOrder(layers: Layer[]): Layer[] {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
const GROUP_TYPES = new Set(['group', 'layerGroup', 'artboard', 'layerSection']);
|
|
53
|
+
const CHINESE_REGEX = /[一-鿿]/;
|
|
53
54
|
|
|
54
55
|
/**
|
|
55
56
|
* 将图层列表格式化为树形结构
|
|
@@ -81,7 +82,37 @@ export function formatLayersTree(
|
|
|
81
82
|
// 过滤掉不需要导出的图层
|
|
82
83
|
const filteredLayers = layers.filter(layer => {
|
|
83
84
|
const name = layer.name.trim();
|
|
84
|
-
|
|
85
|
+
const ltype = layer.type || '';
|
|
86
|
+
|
|
87
|
+
// 过滤参考图和 fe 开头的图层
|
|
88
|
+
if (name.startsWith('参考图') || name.startsWith('fe')) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// 过滤 sp 类型且全中文的图层
|
|
93
|
+
if (ltype !== 'textLayer' && !GROUP_TYPES.has(ltype)) {
|
|
94
|
+
// 移除 Img_ 或 Img 前缀后检查
|
|
95
|
+
let checkName = name;
|
|
96
|
+
if (checkName.startsWith('Img_')) {
|
|
97
|
+
checkName = checkName.slice(4);
|
|
98
|
+
} else if (checkName.startsWith('Img')) {
|
|
99
|
+
checkName = checkName.slice(3);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// 移除拷贝和九宫格标记
|
|
103
|
+
checkName = checkName.replace(/\s*拷贝\s*\d*/g, '').trim();
|
|
104
|
+
checkName = checkName.replace(/\s+s9-\d+-\d+/g, '').trim();
|
|
105
|
+
|
|
106
|
+
// 移除 " - 中文" 或 " 中文" 后缀(用于检查是否全中文)
|
|
107
|
+
checkName = checkName.replace(/\s*[-\s]+[一-鿿㐀-䶿]+.*$/g, '').trim();
|
|
108
|
+
|
|
109
|
+
// 如果处理后的名称为空或以中文开头,则过滤掉
|
|
110
|
+
if (!checkName || CHINESE_REGEX.test(checkName.charAt(0))) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return true;
|
|
85
116
|
});
|
|
86
117
|
|
|
87
118
|
// 翻转同级节点顺序
|
|
@@ -96,10 +127,18 @@ export function formatLayersTree(
|
|
|
96
127
|
reversedLayers.forEach((layer, idx) => {
|
|
97
128
|
const depth = layer.depth;
|
|
98
129
|
let name = layer.name;
|
|
130
|
+
const ltype = layer.type;
|
|
99
131
|
|
|
100
132
|
// 过滤掉名称中的"拷贝"及其后面的数字部分
|
|
101
133
|
name = name.replace(/\s*拷贝\s*\d*/g, '').trim();
|
|
102
134
|
|
|
135
|
+
// 对于 sp 类型图层,先移除 " - 中文" 后缀(但保留九宫格标记)
|
|
136
|
+
if (ltype !== 'textLayer' && !GROUP_TYPES.has(ltype)) {
|
|
137
|
+
// 匹配 " - 中文" 但不包括 s9 标记
|
|
138
|
+
// 例如: "common_btn - 智能对象组 s9-3-3" → "common_btn s9-3-3"
|
|
139
|
+
name = name.replace(/\s*[-\s]+[一-鿿㐀-䶿]+[^s\d]*?(?=\s+s9-|\s*$)/g, '').trim();
|
|
140
|
+
}
|
|
141
|
+
|
|
103
142
|
// 提取九宫格参数(如 " s9-3-3" → [3,3])
|
|
104
143
|
let s9Params: [number, number] | null = null;
|
|
105
144
|
const s9Match = name.match(/\s+s9-(\d+)-(\d+)/);
|
|
@@ -110,7 +149,6 @@ export function formatLayersTree(
|
|
|
110
149
|
// 过滤掉九宫格标记
|
|
111
150
|
name = name.replace(/\s+s9-\d+-\d+/g, '').trim();
|
|
112
151
|
|
|
113
|
-
const ltype = layer.type;
|
|
114
152
|
const width = layer.width;
|
|
115
153
|
const height = layer.height;
|
|
116
154
|
const absX = layer.x;
|
package/src/resolver.ts
CHANGED
|
@@ -57,10 +57,15 @@ function extractResourceFilename(name: string): string | null {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
|
-
*
|
|
60
|
+
* 收集图层中所有需要解析的资源文件名(包含图层名称和完整图层对象映射)
|
|
61
61
|
*/
|
|
62
|
-
function collectImageRefs(layers: Layer[]):
|
|
62
|
+
function collectImageRefs(layers: Layer[]): {
|
|
63
|
+
refs: Set<string>;
|
|
64
|
+
layerMap: Map<string, Layer[]>
|
|
65
|
+
} {
|
|
63
66
|
const refs = new Set<string>();
|
|
67
|
+
const layerMap = new Map<string, Layer[]>();
|
|
68
|
+
|
|
64
69
|
for (const layer of layers) {
|
|
65
70
|
const name = layer.name || '';
|
|
66
71
|
const ltype = layer.type || '';
|
|
@@ -69,9 +74,15 @@ function collectImageRefs(layers: Layer[]): Set<string> {
|
|
|
69
74
|
if (name.startsWith('参考图') || name.startsWith('fe')) continue;
|
|
70
75
|
|
|
71
76
|
const filename = extractResourceFilename(name);
|
|
72
|
-
if (filename)
|
|
77
|
+
if (filename) {
|
|
78
|
+
refs.add(filename);
|
|
79
|
+
if (!layerMap.has(filename)) {
|
|
80
|
+
layerMap.set(filename, []);
|
|
81
|
+
}
|
|
82
|
+
layerMap.get(filename)!.push(layer);
|
|
83
|
+
}
|
|
73
84
|
}
|
|
74
|
-
return refs;
|
|
85
|
+
return { refs, layerMap };
|
|
75
86
|
}
|
|
76
87
|
|
|
77
88
|
/**
|
|
@@ -83,7 +94,7 @@ export function resolveLayerAssetsUnity(
|
|
|
83
94
|
): Record<string, AssetInfo> {
|
|
84
95
|
if (!assetsDir || !fs.existsSync(assetsDir)) return {};
|
|
85
96
|
|
|
86
|
-
const imageRefs = collectImageRefs(layers);
|
|
97
|
+
const { refs: imageRefs, layerMap } = collectImageRefs(layers);
|
|
87
98
|
const uuidMap: Record<string, AssetInfo> = {};
|
|
88
99
|
const missingFiles: string[] = [];
|
|
89
100
|
|
|
@@ -112,7 +123,11 @@ export function resolveLayerAssetsUnity(
|
|
|
112
123
|
if (missingFiles.length > 0) {
|
|
113
124
|
console.error(`\n❌ 错误:以下 ${missingFiles.length} 个资源在本地未找到:`);
|
|
114
125
|
for (const f of missingFiles.sort()) {
|
|
115
|
-
|
|
126
|
+
const layers = layerMap.get(f) || [];
|
|
127
|
+
console.error(`\n 资源文件: ${f}`);
|
|
128
|
+
for (const layer of layers) {
|
|
129
|
+
console.error(` 图层完整信息:\n${JSON.stringify(layer, null, 2)}`);
|
|
130
|
+
}
|
|
116
131
|
}
|
|
117
132
|
console.error(`\n请确保资源文件存在于目录:${assetsDir}`);
|
|
118
133
|
throw new Error(`缺失 ${missingFiles.length} 个资源文件`);
|
|
@@ -134,7 +149,7 @@ export function resolveLayerAssetsCocos(
|
|
|
134
149
|
): Record<string, AssetInfo> {
|
|
135
150
|
if (!assetsDir || !fs.existsSync(assetsDir)) return {};
|
|
136
151
|
|
|
137
|
-
const imageRefs = collectImageRefs(layers);
|
|
152
|
+
const { refs: imageRefs, layerMap } = collectImageRefs(layers);
|
|
138
153
|
const uuidMap: Record<string, AssetInfo> = {};
|
|
139
154
|
const missingFiles: string[] = [];
|
|
140
155
|
|
|
@@ -173,7 +188,11 @@ export function resolveLayerAssetsCocos(
|
|
|
173
188
|
if (missingFiles.length > 0) {
|
|
174
189
|
console.error(`\n❌ 错误:以下 ${missingFiles.length} 个资源在本地未找到:`);
|
|
175
190
|
for (const f of missingFiles.sort()) {
|
|
176
|
-
|
|
191
|
+
const layers = layerMap.get(f) || [];
|
|
192
|
+
console.error(`\n 资源文件: ${f}`);
|
|
193
|
+
for (const layer of layers) {
|
|
194
|
+
console.error(` 图层完整信息:\n${JSON.stringify(layer, null, 2)}`);
|
|
195
|
+
}
|
|
177
196
|
}
|
|
178
197
|
console.error(`\n请确保资源文件存在于目录:${assetsDir}`);
|
|
179
198
|
throw new Error(`缺失 ${missingFiles.length} 个资源文件`);
|