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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo-cmp-cli",
3
- "version": "1.6.0-beta.11",
3
+ "version": "1.6.0-beta.12",
4
4
  "description": "前端脚手架:自定义组件开发工具,支持react 和 vue2.0技术栈。",
5
5
  "keywords": [
6
6
  "neo-cli",
@@ -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
- const response = await axios({
44
- url: cmpZipUrl,
45
- method: 'GET',
46
- responseType: 'arraybuffer'
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
- await fs.writeFile(zipFilePath, response.data);
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.text(`${consoleTag}正在解压组件源码...`);
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
- process.exit(1);
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.message);
119
+ spinner.fail(`${consoleTag}从 zip 包创建自定义组件失败(${finalCmpName}):`, error);
87
120
  // 清理临时目录
88
121
  await fs.remove(tempDir);
89
122
 
package/test/demo2.js ADDED
@@ -0,0 +1,3 @@
1
+ const createCmpByZip = require('../src/utils/cmpUtils/createCmpByZip');
2
+
3
+ createCmpByZip('https://publicfront-1253467224.cos.ap-beijing.myqcloud.com/customComponent/crm-cd/tenant/3256219432312412/1762331900697/entityDetailSource.zip', 'entity-detail');