neo-cmp-cli 1.6.0-beta.11 → 1.6.0-beta.12
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/package.json
CHANGED
|
@@ -40,17 +40,50 @@ module.exports = async function (cmpZipUrl, cmpName, componentBaseDir = './src/c
|
|
|
40
40
|
const zipFilePath = path.join(tempDir, `${finalCmpName}.zip`);
|
|
41
41
|
|
|
42
42
|
// 下载 zip 文件
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
let response;
|
|
44
|
+
try {
|
|
45
|
+
response = await axios({
|
|
46
|
+
url: cmpZipUrl,
|
|
47
|
+
method: 'GET',
|
|
48
|
+
responseType: 'arraybuffer',
|
|
49
|
+
timeout: 60000, // 60秒超时
|
|
50
|
+
maxContentLength: Infinity,
|
|
51
|
+
maxBodyLength: Infinity
|
|
52
|
+
});
|
|
53
|
+
} catch (axiosError) {
|
|
54
|
+
spinner.fail(`${consoleTag}下载文件失败:`, axiosError.message);
|
|
55
|
+
throw writeError;
|
|
56
|
+
}
|
|
48
57
|
|
|
49
58
|
// 保存 zip 文件到临时目录
|
|
50
|
-
|
|
59
|
+
try {
|
|
60
|
+
let buffer;
|
|
61
|
+
// 处理不同的数据类型
|
|
62
|
+
if (Buffer.isBuffer(response.data)) {
|
|
63
|
+
// 如果已经是 Buffer,直接使用
|
|
64
|
+
buffer = response.data;
|
|
65
|
+
} else if (response.data instanceof ArrayBuffer) {
|
|
66
|
+
// 如果是 ArrayBuffer,转换为 Buffer
|
|
67
|
+
buffer = Buffer.from(response.data);
|
|
68
|
+
} else if (response.data.buffer instanceof ArrayBuffer) {
|
|
69
|
+
// 如果是 TypedArray (如 Uint8Array),使用其 buffer
|
|
70
|
+
buffer = Buffer.from(response.data.buffer);
|
|
71
|
+
} else {
|
|
72
|
+
// 尝试直接转换
|
|
73
|
+
buffer = Buffer.from(response.data);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
await fs.writeFile(zipFilePath, buffer);
|
|
77
|
+
} catch (writeError) {
|
|
78
|
+
spinner.fail(`${consoleTag}保存文件失败`);
|
|
79
|
+
console.error(`写入文件错误:`, writeError);
|
|
80
|
+
console.error(`错误堆栈:`, writeError.stack);
|
|
81
|
+
throw writeError;
|
|
82
|
+
}
|
|
51
83
|
|
|
52
84
|
// 解压 zip 文件
|
|
53
|
-
spinner.
|
|
85
|
+
spinner.info(`${consoleTag}正在解压组件源码...`);
|
|
86
|
+
|
|
54
87
|
const zip = new AdmZip(zipFilePath);
|
|
55
88
|
const extractPath = path.join(tempDir, finalCmpName);
|
|
56
89
|
zip.extractAllTo(extractPath, true);
|
|
@@ -61,7 +94,7 @@ module.exports = async function (cmpZipUrl, cmpName, componentBaseDir = './src/c
|
|
|
61
94
|
if (!fs.existsSync(cmpSourcePath)) {
|
|
62
95
|
spinner.fail(`${consoleTag}解压后的 zip 包中未找到 ${finalCmpName} 组件源码目录。`);
|
|
63
96
|
await fs.remove(tempDir);
|
|
64
|
-
|
|
97
|
+
return false;
|
|
65
98
|
}
|
|
66
99
|
|
|
67
100
|
// 确保目标目录存在
|
|
@@ -83,7 +116,7 @@ module.exports = async function (cmpZipUrl, cmpName, componentBaseDir = './src/c
|
|
|
83
116
|
|
|
84
117
|
return true;
|
|
85
118
|
} catch (error) {
|
|
86
|
-
spinner.fail(`${consoleTag}从 zip 包创建自定义组件失败(${finalCmpName}):`, error
|
|
119
|
+
spinner.fail(`${consoleTag}从 zip 包创建自定义组件失败(${finalCmpName}):`, error);
|
|
87
120
|
// 清理临时目录
|
|
88
121
|
await fs.remove(tempDir);
|
|
89
122
|
|
package/test/demo2.js
ADDED