neo-cmp-cli 1.7.15 → 1.8.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/package.json +1 -1
- package/src/neo/neoLogin.js +6 -6
- package/src/neo/neoService.js +131 -22
- package/src/template/antd-custom-cmp-template/package.json +2 -2
- package/src/template/antd-custom-cmp-template/src/components/dataDashboard/model.ts +15 -16
- package/src/template/antd-custom-cmp-template/src/components/infoCard/model.ts +15 -13
- package/src/template/develop/neo-custom-cmp-template/src/components/contactCardList/model.ts +1 -7
- package/src/template/develop/neo-custom-cmp-template/src/components/contactForm/model.ts +1 -1
- package/src/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/model.ts +1 -1
- package/src/template/echarts-custom-cmp-template/neo.config.js +1 -1
- package/src/template/echarts-custom-cmp-template/package.json +2 -2
- package/src/template/echarts-custom-cmp-template/src/components/chartWidget/model.ts +15 -17
- package/src/template/echarts-custom-cmp-template/src/components/mapWidget/model.ts +15 -13
- package/src/template/empty-cmp/model.ts +15 -13
- package/src/template/empty-custom-cmp-template/package.json +2 -2
- package/src/template/neo-custom-cmp-template/neo.config.js +4 -10
- package/src/template/neo-custom-cmp-template/package.json +5 -3
- package/src/template/neo-custom-cmp-template/src/components/entityCardList/model.ts +15 -14
- package/src/template/neo-custom-cmp-template/src/components/entityDetail/model.ts +15 -19
- package/src/template/neo-custom-cmp-template/src/components/entityForm/model.ts +15 -17
- package/src/template/neo-custom-cmp-template/src/components/entityTable/model.ts +15 -17
- package/src/template/neo-custom-cmp-template/tsconfig.json +42 -64
- package/src/template/react-custom-cmp-template/package.json +2 -2
- package/src/template/react-custom-cmp-template/src/components/infoCard/model.js +15 -13
- package/src/template/react-ts-custom-cmp-template/package.json +2 -2
- package/src/template/react-ts-custom-cmp-template/src/components/listWidget/model.ts +15 -13
- package/src/template/vue2-custom-cmp-template/package.json +2 -2
- package/src/template/vue2-custom-cmp-template/src/components/vueInfoCard/model.js +15 -13
- package/src/utils/cmpUtils/createCmpByZip.js +17 -6
- package/src/utils/cmpUtils/pullCmp.js +10 -9
- package/src/utils/cmpUtils/pushCmp.js +30 -11
- package/test/deprecate-versions.js +2 -2
|
@@ -72,22 +72,23 @@ const pullCmp = async (cmpType, authConfig, _neoService) => {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
// 判断拉取的组件和当前项目是否为同一技术栈
|
|
75
|
-
if (cmpInfo.framework !== framework) {
|
|
75
|
+
if (cmpInfo.framework && cmpInfo.framework !== framework) {
|
|
76
76
|
errorLog(`拉取失败,${cmpType}自定义组件与当前项目技术栈不一致。`, spinner);
|
|
77
77
|
process.exit(1);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
// 获取当前源码
|
|
81
|
-
if (!cmpInfo.codeLib) {
|
|
82
|
-
errorLog(`拉取失败,${cmpType}自定义组件未记录对应的源码文件。`, spinner);
|
|
83
|
-
process.exit(1);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
80
|
// 下载源码文件并解析到 src/components 目录下
|
|
87
|
-
const codeLib =
|
|
81
|
+
const codeLib = neoService.getCodeLibByCmpType(cmpType); // 源码文件地址(zip包地址)
|
|
82
|
+
|
|
83
|
+
// 确保 token 有效
|
|
84
|
+
const token = await neoService.ensureValidToken();
|
|
88
85
|
|
|
89
86
|
// 将zip 包里面的自定义组件源码解析到 src/components 目录下
|
|
90
|
-
const cmpResult = await createCmpByZip(codeLib,
|
|
87
|
+
const cmpResult = await createCmpByZip(codeLib, {
|
|
88
|
+
token,
|
|
89
|
+
cmpName: cmpType,
|
|
90
|
+
componentBaseDir: './src/components'
|
|
91
|
+
});
|
|
91
92
|
if (!cmpResult) {
|
|
92
93
|
errorLog(`拉取失败,${cmpType}自定义组件源码解析失败,请检查源码文件是否正确。`, spinner);
|
|
93
94
|
process.exit(1);
|
|
@@ -12,6 +12,18 @@ const createCmpProjectZip = require('../projectUtils/createCmpProjectZip');
|
|
|
12
12
|
const currentPackageJsonDir = catchCurPackageJson();
|
|
13
13
|
const currentPackageJson = getConfigObj(currentPackageJsonDir);
|
|
14
14
|
|
|
15
|
+
|
|
16
|
+
// 获取属性 propsSchema 数据结构
|
|
17
|
+
const getPropsSchema = (propsSchema = []) => {
|
|
18
|
+
return propsSchema.map((item) => {
|
|
19
|
+
return {
|
|
20
|
+
label: item.label,
|
|
21
|
+
description: item.description,
|
|
22
|
+
propSchema: JSON.stringify(item)
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
|
|
15
27
|
/**
|
|
16
28
|
* 构建组件数据映射
|
|
17
29
|
* @param {string} assetsRoot 构建产物的目录
|
|
@@ -54,45 +66,48 @@ const buildComponentData = async (assetsRoot, cmpInfo) => {
|
|
|
54
66
|
// const CatchCustomCmpModelClass = modelModule.default || modelModule;
|
|
55
67
|
} else {
|
|
56
68
|
errorLog(`未找到自定义组件模型文件,请检查以下路径是否存在:${modelFile}`);
|
|
57
|
-
|
|
69
|
+
process.exit(1);
|
|
58
70
|
}
|
|
59
71
|
if (!globalThis.window || !globalThis.window.NEOEditorCustomModels) {
|
|
60
72
|
errorLog(
|
|
61
73
|
`模型文件未导出有效模型方法(CatchCustomCmpModelClass),模型文件地址: ${modelFile} `
|
|
62
74
|
);
|
|
63
|
-
|
|
75
|
+
process.exit(1);
|
|
64
76
|
}
|
|
65
77
|
|
|
66
78
|
const ModelClass = globalThis.window.NEOEditorCustomModels[cmpType];
|
|
67
79
|
if (!ModelClass) {
|
|
68
80
|
errorLog(`未找到自定义组件模型类(${cmpType}),模型文件地址: ${modelFile} `);
|
|
69
|
-
|
|
81
|
+
process.exit(1);
|
|
70
82
|
}
|
|
71
83
|
// 实例化模型类
|
|
72
84
|
const modelInstance = new ModelClass();
|
|
73
85
|
|
|
74
86
|
if (!modelInstance) {
|
|
75
87
|
errorLog(`未找到自定义组件模型信息(${cmpType}),模型文件地址: ${modelFile} `);
|
|
76
|
-
|
|
88
|
+
process.exit(1);
|
|
77
89
|
}
|
|
78
90
|
|
|
79
91
|
// 构建组件数据,合并模型实例的信息
|
|
80
92
|
const curCmpInfo = {
|
|
81
93
|
...cmpInfo,
|
|
82
|
-
plugin: cmpInfo.modelAsset,
|
|
83
94
|
version: currentPackageJson.version || '1.0.0',
|
|
84
95
|
// 技术栈标识: 从 package.json / framework 字段获取,没有则默认 为 react ts 技术栈
|
|
85
96
|
framework: currentPackageJson.framework ? getFramework(currentPackageJson.framework) : 0, // 0: React, 1: vue2, 2: jQuery, 3: vue3
|
|
86
97
|
// 从模型实例中提取并设置组件信息
|
|
87
98
|
label: modelInstance.label || cmpType,
|
|
88
99
|
description: modelInstance.description || '',
|
|
89
|
-
componentCategory: (modelInstance.tags || []).join(','),
|
|
90
|
-
|
|
100
|
+
componentCategory: (modelInstance.tags || ['自定义组件']).join(','),
|
|
101
|
+
targetPage: (modelInstance.targetPage || ['customPage']), // 支持的页面类型
|
|
102
|
+
targetObject: (modelInstance.targetObject || ['all']), // 支持的实体类型
|
|
103
|
+
targetApplication: (modelInstance.targetApplication || ['all']), // 支持的应用类型
|
|
104
|
+
targetDevice: (modelInstance.targetDevice || 'all'), // 支持的设备类型。只有这个字段是字符串数值,其他都是数组
|
|
105
|
+
iconUrl: modelInstance.iconSrc || modelInstance.iconUrl,
|
|
91
106
|
defaultProps: JSON.stringify(modelInstance.defaultComProps || {}),
|
|
92
107
|
previewProps: JSON.stringify(modelInstance.previewComProps || {}),
|
|
93
|
-
|
|
108
|
+
props: getPropsSchema(modelInstance.propsSchema || []),
|
|
94
109
|
events: modelInstance.events || [],
|
|
95
|
-
|
|
110
|
+
functions: modelInstance.functions || modelInstance.actions || [],
|
|
96
111
|
// 如果模型实例中有其他属性,也可以添加
|
|
97
112
|
exposedToDesigner:
|
|
98
113
|
modelInstance.exposedToDesigner !== undefined ? modelInstance.exposedToDesigner : true,
|
|
@@ -101,7 +116,7 @@ const buildComponentData = async (assetsRoot, cmpInfo) => {
|
|
|
101
116
|
modelInstance.enableDuplicate !== undefined ? modelInstance.enableDuplicate : true
|
|
102
117
|
};
|
|
103
118
|
|
|
104
|
-
console.log(`自定义组件模型信息(${cmpType}):`, curCmpInfo);
|
|
119
|
+
console.log(`自定义组件模型信息(${cmpType}):`, _.omit(curCmpInfo, ['assetFile', 'modelAssetFile', 'cssAssetFile', 'codeLibFile']));
|
|
105
120
|
return curCmpInfo;
|
|
106
121
|
} catch (error) {
|
|
107
122
|
errorLog(`自定义组件模型文件解析失败 (${modelFile || '未知路径'}): ${error.message}`);
|
|
@@ -151,7 +166,8 @@ const pushCmp = async (config, cmpType) => {
|
|
|
151
166
|
errorLog(`[1/4] 源码文件打包失败。`, spinner);
|
|
152
167
|
}
|
|
153
168
|
|
|
154
|
-
|
|
169
|
+
/*
|
|
170
|
+
// 步骤 3: 上传构建后资源文件(改放在保存时直接上传组件资源文件)
|
|
155
171
|
spinner.start(`[2/4] 上传自定义组件构建产物到 OSS...`);
|
|
156
172
|
let cmpInfo;
|
|
157
173
|
try {
|
|
@@ -164,6 +180,9 @@ const pushCmp = async (config, cmpType) => {
|
|
|
164
180
|
} catch (error) {
|
|
165
181
|
errorLog(`[2/4] 构建产物上传失败。`, spinner);
|
|
166
182
|
}
|
|
183
|
+
*/
|
|
184
|
+
spinner.start(`[2/4] 获取自定义组件构建产物...`);
|
|
185
|
+
const cmpInfo = await neoService.getCmpAssets(cmpType);
|
|
167
186
|
|
|
168
187
|
// 步骤 4: 构建组件数据
|
|
169
188
|
spinner.start(`[3/4] 构建组件数据...`);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { execSync } = require('child_process');
|
|
2
2
|
|
|
3
|
-
//
|
|
4
|
-
const versionsToDeprecate = ["1.7.
|
|
3
|
+
// 所有需要废弃的版本
|
|
4
|
+
const versionsToDeprecate = ["1.7.16"];
|
|
5
5
|
|
|
6
6
|
const packageName = 'neo-cmp-cli';
|
|
7
7
|
const deprecateMessage = '此版本为开发中版本(存在 bug),请升级到最新版本。';
|