neo-cmp-cli 1.8.1 → 1.8.3

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.
Files changed (201) hide show
  1. package/README.md +91 -7
  2. package/bin/neo.js +1 -1
  3. package/package.json +6 -5
  4. package/src/{module/index.js → index.js} +14 -14
  5. package/src/{module/main.js → main.js} +18 -18
  6. package/src/module/neoInitByCopy.js +6 -6
  7. package/src/neo/webpack.mf.js +1 -1
  8. package/src/oss/publish2oss.js +1 -1
  9. package/src/utils/cmpUtils/createCmpByZip.js +7 -5
  10. package/src/utils/cmpUtils/pullCmp.js +1 -1
  11. package/src/utils/cmpUtils/pushCmp.js +9 -7
  12. package/src/utils/projectUtils/updatePublishLog.js +1 -1
  13. package/test/demo.js +1 -1
  14. package/test/demo3.js +1 -1
  15. package/test/neo.config.js +77 -0
  16. package/src/template/antd-custom-cmp-template/.prettierrc.js +0 -12
  17. package/src/template/antd-custom-cmp-template/README.md +0 -153
  18. package/src/template/antd-custom-cmp-template/commitlint.config.js +0 -59
  19. package/src/template/antd-custom-cmp-template/neo.config.js +0 -144
  20. package/src/template/antd-custom-cmp-template/package.json +0 -60
  21. package/src/template/antd-custom-cmp-template/public/css/base.css +0 -283
  22. package/src/template/antd-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  23. package/src/template/antd-custom-cmp-template/public/template.html +0 -13
  24. package/src/template/antd-custom-cmp-template/src/assets/css/common.scss +0 -127
  25. package/src/template/antd-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  26. package/src/template/antd-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  27. package/src/template/antd-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  28. package/src/template/antd-custom-cmp-template/src/assets/img/favicon.png +0 -0
  29. package/src/template/antd-custom-cmp-template/src/components/dataDashboard/README.md +0 -39
  30. package/src/template/antd-custom-cmp-template/src/components/dataDashboard/index.tsx +0 -462
  31. package/src/template/antd-custom-cmp-template/src/components/dataDashboard/model.ts +0 -75
  32. package/src/template/antd-custom-cmp-template/src/components/dataDashboard/style.scss +0 -1667
  33. package/src/template/antd-custom-cmp-template/src/components/infoCard/index.tsx +0 -87
  34. package/src/template/antd-custom-cmp-template/src/components/infoCard/model.ts +0 -80
  35. package/src/template/antd-custom-cmp-template/src/components/infoCard/style.scss +0 -105
  36. package/src/template/antd-custom-cmp-template/tsconfig.json +0 -68
  37. package/src/template/develop/neo-custom-cmp-template/.prettierrc.js +0 -12
  38. package/src/template/develop/neo-custom-cmp-template/README.md +0 -48
  39. package/src/template/develop/neo-custom-cmp-template/commitlint.config.js +0 -59
  40. package/src/template/develop/neo-custom-cmp-template/docs/README.md +0 -13
  41. package/src/template/develop/neo-custom-cmp-template/neo.config.js +0 -121
  42. package/src/template/develop/neo-custom-cmp-template/package.json +0 -63
  43. package/src/template/develop/neo-custom-cmp-template/public/css/base.css +0 -283
  44. package/src/template/develop/neo-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  45. package/src/template/develop/neo-custom-cmp-template/public/template.html +0 -13
  46. package/src/template/develop/neo-custom-cmp-template/src/assets/css/common.scss +0 -127
  47. package/src/template/develop/neo-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  48. package/src/template/develop/neo-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  49. package/src/template/develop/neo-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  50. package/src/template/develop/neo-custom-cmp-template/src/assets/img/favicon.png +0 -0
  51. package/src/template/develop/neo-custom-cmp-template/src/assets/img/table.svg +0 -1
  52. package/src/template/develop/neo-custom-cmp-template/src/components/contactCardList/README.md +0 -65
  53. package/src/template/develop/neo-custom-cmp-template/src/components/contactCardList/index.tsx +0 -180
  54. package/src/template/develop/neo-custom-cmp-template/src/components/contactCardList/model.ts +0 -50
  55. package/src/template/develop/neo-custom-cmp-template/src/components/contactCardList/style.scss +0 -260
  56. package/src/template/develop/neo-custom-cmp-template/src/components/contactForm/README.md +0 -94
  57. package/src/template/develop/neo-custom-cmp-template/src/components/contactForm/index.tsx +0 -251
  58. package/src/template/develop/neo-custom-cmp-template/src/components/contactForm/model.ts +0 -56
  59. package/src/template/develop/neo-custom-cmp-template/src/components/contactForm/style.scss +0 -120
  60. package/src/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/README.md +0 -115
  61. package/src/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/index.tsx +0 -304
  62. package/src/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/model.ts +0 -87
  63. package/src/template/develop/neo-custom-cmp-template/src/components/neoEntityGrid/style.scss +0 -127
  64. package/src/template/develop/neo-custom-cmp-template/src/utils/axiosFetcher.ts +0 -29
  65. package/src/template/develop/neo-custom-cmp-template/src/utils/queryObjectData.ts +0 -39
  66. package/src/template/develop/neo-custom-cmp-template/src/utils/xobjects.ts +0 -203
  67. package/src/template/develop/neo-custom-cmp-template/tsconfig.json +0 -68
  68. package/src/template/echarts-custom-cmp-template/.prettierrc.js +0 -12
  69. package/src/template/echarts-custom-cmp-template/README.md +0 -198
  70. package/src/template/echarts-custom-cmp-template/commitlint.config.js +0 -59
  71. package/src/template/echarts-custom-cmp-template/neo.config.js +0 -140
  72. package/src/template/echarts-custom-cmp-template/package.json +0 -61
  73. package/src/template/echarts-custom-cmp-template/public/css/base.css +0 -283
  74. package/src/template/echarts-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  75. package/src/template/echarts-custom-cmp-template/public/template.html +0 -13
  76. package/src/template/echarts-custom-cmp-template/src/assets/css/common.scss +0 -127
  77. package/src/template/echarts-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  78. package/src/template/echarts-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  79. package/src/template/echarts-custom-cmp-template/src/assets/img/chart.svg +0 -1
  80. package/src/template/echarts-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  81. package/src/template/echarts-custom-cmp-template/src/assets/img/favicon.png +0 -0
  82. package/src/template/echarts-custom-cmp-template/src/components/chartWidget/README.md +0 -186
  83. package/src/template/echarts-custom-cmp-template/src/components/chartWidget/index.tsx +0 -724
  84. package/src/template/echarts-custom-cmp-template/src/components/chartWidget/model.ts +0 -151
  85. package/src/template/echarts-custom-cmp-template/src/components/chartWidget/style.scss +0 -209
  86. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/README.md +0 -125
  87. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/USAGE.md +0 -190
  88. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/index.tsx +0 -385
  89. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/model.ts +0 -107
  90. package/src/template/echarts-custom-cmp-template/src/components/mapWidget/style.scss +0 -192
  91. package/src/template/echarts-custom-cmp-template/src/utils/url.ts +0 -82
  92. package/src/template/echarts-custom-cmp-template/tsconfig.json +0 -68
  93. package/src/template/empty-cmp/index.tsx +0 -58
  94. package/src/template/empty-cmp/model.ts +0 -79
  95. package/src/template/empty-cmp/style.scss +0 -72
  96. package/src/template/empty-custom-cmp-template/.prettierrc.js +0 -12
  97. package/src/template/empty-custom-cmp-template/README.md +0 -154
  98. package/src/template/empty-custom-cmp-template/commitlint.config.js +0 -59
  99. package/src/template/empty-custom-cmp-template/neo.config.js +0 -138
  100. package/src/template/empty-custom-cmp-template/package.json +0 -58
  101. package/src/template/empty-custom-cmp-template/public/css/base.css +0 -283
  102. package/src/template/empty-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  103. package/src/template/empty-custom-cmp-template/public/template.html +0 -13
  104. package/src/template/empty-custom-cmp-template/src/assets/css/common.scss +0 -127
  105. package/src/template/empty-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  106. package/src/template/empty-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  107. package/src/template/empty-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  108. package/src/template/empty-custom-cmp-template/src/assets/img/favicon.png +0 -0
  109. package/src/template/empty-custom-cmp-template/src/assets/img/map.svg +0 -1
  110. package/src/template/empty-custom-cmp-template/src/components/README.md +0 -3
  111. package/src/template/empty-custom-cmp-template/tsconfig.json +0 -68
  112. package/src/template/neo-custom-cmp-template/.prettierrc.js +0 -12
  113. package/src/template/neo-custom-cmp-template/README.md +0 -155
  114. package/src/template/neo-custom-cmp-template/commitlint.config.js +0 -59
  115. package/src/template/neo-custom-cmp-template/docs/README.md +0 -244
  116. package/src/template/neo-custom-cmp-template/neo.config.js +0 -140
  117. package/src/template/neo-custom-cmp-template/package.json +0 -66
  118. package/src/template/neo-custom-cmp-template/public/css/base.css +0 -283
  119. package/src/template/neo-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  120. package/src/template/neo-custom-cmp-template/public/template.html +0 -13
  121. package/src/template/neo-custom-cmp-template/src/assets/css/common.scss +0 -127
  122. package/src/template/neo-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  123. package/src/template/neo-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  124. package/src/template/neo-custom-cmp-template/src/assets/img/card-list.svg +0 -1
  125. package/src/template/neo-custom-cmp-template/src/assets/img/contact-form.svg +0 -1
  126. package/src/template/neo-custom-cmp-template/src/assets/img/custom-form.svg +0 -1
  127. package/src/template/neo-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  128. package/src/template/neo-custom-cmp-template/src/assets/img/data-list.svg +0 -1
  129. package/src/template/neo-custom-cmp-template/src/assets/img/detail.svg +0 -1
  130. package/src/template/neo-custom-cmp-template/src/assets/img/table.svg +0 -1
  131. package/src/template/neo-custom-cmp-template/src/components/entityCardList/README.md +0 -61
  132. package/src/template/neo-custom-cmp-template/src/components/entityCardList/index.tsx +0 -202
  133. package/src/template/neo-custom-cmp-template/src/components/entityCardList/model.ts +0 -74
  134. package/src/template/neo-custom-cmp-template/src/components/entityCardList/style.scss +0 -260
  135. package/src/template/neo-custom-cmp-template/src/components/entityDetail/README.md +0 -176
  136. package/src/template/neo-custom-cmp-template/src/components/entityDetail/index.tsx +0 -334
  137. package/src/template/neo-custom-cmp-template/src/components/entityDetail/model.ts +0 -123
  138. package/src/template/neo-custom-cmp-template/src/components/entityDetail/style.scss +0 -292
  139. package/src/template/neo-custom-cmp-template/src/components/entityForm/README.md +0 -176
  140. package/src/template/neo-custom-cmp-template/src/components/entityForm/index.tsx +0 -615
  141. package/src/template/neo-custom-cmp-template/src/components/entityForm/model.ts +0 -107
  142. package/src/template/neo-custom-cmp-template/src/components/entityForm/style.scss +0 -370
  143. package/src/template/neo-custom-cmp-template/src/components/entityTable/README.md +0 -92
  144. package/src/template/neo-custom-cmp-template/src/components/entityTable/index.tsx +0 -784
  145. package/src/template/neo-custom-cmp-template/src/components/entityTable/model.ts +0 -134
  146. package/src/template/neo-custom-cmp-template/src/components/entityTable/style.scss +0 -304
  147. package/src/template/neo-custom-cmp-template/src/utils/axiosFetcher.ts +0 -37
  148. package/src/template/neo-custom-cmp-template/src/utils/queryObjectData.ts +0 -76
  149. package/src/template/neo-custom-cmp-template/src/utils/xobjects.ts +0 -162
  150. package/src/template/neo-custom-cmp-template/tsconfig.json +0 -49
  151. package/src/template/react-custom-cmp-template/.prettierrc.js +0 -12
  152. package/src/template/react-custom-cmp-template/README.md +0 -154
  153. package/src/template/react-custom-cmp-template/commitlint.config.js +0 -59
  154. package/src/template/react-custom-cmp-template/neo.config.js +0 -137
  155. package/src/template/react-custom-cmp-template/package.json +0 -57
  156. package/src/template/react-custom-cmp-template/public/css/base.css +0 -283
  157. package/src/template/react-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  158. package/src/template/react-custom-cmp-template/public/template.html +0 -13
  159. package/src/template/react-custom-cmp-template/src/assets/css/common.scss +0 -127
  160. package/src/template/react-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  161. package/src/template/react-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  162. package/src/template/react-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  163. package/src/template/react-custom-cmp-template/src/assets/img/favicon.png +0 -0
  164. package/src/template/react-custom-cmp-template/src/components/infoCard/index.jsx +0 -45
  165. package/src/template/react-custom-cmp-template/src/components/infoCard/model.js +0 -81
  166. package/src/template/react-custom-cmp-template/src/components/infoCard/style.scss +0 -67
  167. package/src/template/react-ts-custom-cmp-template/.prettierrc.js +0 -12
  168. package/src/template/react-ts-custom-cmp-template/README.md +0 -154
  169. package/src/template/react-ts-custom-cmp-template/commitlint.config.js +0 -59
  170. package/src/template/react-ts-custom-cmp-template/neo.config.js +0 -138
  171. package/src/template/react-ts-custom-cmp-template/package.json +0 -59
  172. package/src/template/react-ts-custom-cmp-template/public/css/base.css +0 -283
  173. package/src/template/react-ts-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  174. package/src/template/react-ts-custom-cmp-template/public/template.html +0 -13
  175. package/src/template/react-ts-custom-cmp-template/src/assets/css/common.scss +0 -127
  176. package/src/template/react-ts-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  177. package/src/template/react-ts-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  178. package/src/template/react-ts-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  179. package/src/template/react-ts-custom-cmp-template/src/assets/img/favicon.png +0 -0
  180. package/src/template/react-ts-custom-cmp-template/src/assets/img/map.svg +0 -1
  181. package/src/template/react-ts-custom-cmp-template/src/components/listWidget/README.md +0 -2
  182. package/src/template/react-ts-custom-cmp-template/src/components/listWidget/index.tsx +0 -208
  183. package/src/template/react-ts-custom-cmp-template/src/components/listWidget/model.ts +0 -92
  184. package/src/template/react-ts-custom-cmp-template/src/components/listWidget/style.scss +0 -350
  185. package/src/template/react-ts-custom-cmp-template/tsconfig.json +0 -68
  186. package/src/template/vue2-custom-cmp-template/.prettierrc.js +0 -12
  187. package/src/template/vue2-custom-cmp-template/README.md +0 -154
  188. package/src/template/vue2-custom-cmp-template/commitlint.config.js +0 -59
  189. package/src/template/vue2-custom-cmp-template/neo.config.js +0 -146
  190. package/src/template/vue2-custom-cmp-template/package.json +0 -59
  191. package/src/template/vue2-custom-cmp-template/public/css/base.css +0 -283
  192. package/src/template/vue2-custom-cmp-template/public/scripts/app/bluebird.js +0 -6679
  193. package/src/template/vue2-custom-cmp-template/public/template.html +0 -13
  194. package/src/template/vue2-custom-cmp-template/src/assets/css/common.scss +0 -126
  195. package/src/template/vue2-custom-cmp-template/src/assets/css/mixin.scss +0 -47
  196. package/src/template/vue2-custom-cmp-template/src/assets/img/NeoCRM.jpg +0 -0
  197. package/src/template/vue2-custom-cmp-template/src/assets/img/custom-widget.svg +0 -1
  198. package/src/template/vue2-custom-cmp-template/src/assets/img/favicon.png +0 -0
  199. package/src/template/vue2-custom-cmp-template/src/components/vueInfoCard/index.vue +0 -131
  200. package/src/template/vue2-custom-cmp-template/src/components/vueInfoCard/model.js +0 -81
  201. package/src/utils/getConfigObj.js +0 -18
package/README.md CHANGED
@@ -243,9 +243,93 @@ module.exports = {
243
243
 
244
244
  ### 3. 使用平台实体数据源
245
245
 
246
- 可使用 OpenAPI SDK 对接平台实体数据源,详细使用方法见 [neo-open-api](https://www.npmjs.com/package/neo-open-api)。
246
+ 可在自定义组件中使用 OpenAPI SDK 对接平台实体数据源,详细使用方法见 [neo-open-api](https://www.npmjs.com/package/neo-open-api)。
247
+
248
+ ```typescript
249
+ import { xObject } from 'neo-open-api';
250
+
251
+ // 查询联系人列表
252
+ const {data: contacts} = await xObject.query({
253
+ xObjectApiKey: 'Contact',
254
+ fields: ['name', 'phone', 'email'],
255
+ page: 1,
256
+ pageSize: 20,
257
+ orderBy: 'createdAt desc'
258
+ });
259
+
260
+ // 创建新联系人
261
+ const {data: newContact} = await xObject.create('Contact', {
262
+ data: {
263
+ name: '王五',
264
+ phone: '13700137000',
265
+ email: 'wangwu@example.com'
266
+ }
267
+ });
268
+
269
+ // 更新联系人
270
+ const {data: updatedContact} = await xObject.update('Contact', newContact.id, {
271
+ data: {
272
+ name: '王五(更新)'
273
+ }
274
+ });
275
+
276
+ // 获取联系人详情
277
+ const {data: contactDetail} = await xObject.get('Contact', newContact.id);
278
+
279
+ // 删除联系人
280
+ await xObject.delete('Contact', newContact.id);
281
+ ```
282
+
283
+
284
+ ### 4. 使用平台自定义API
285
+
286
+ 可在自定义组件中使用 OpenAPI SDK 对接平台自定义API,详细使用方法见 [neo-open-api](https://www.npmjs.com/package/neo-open-api)。
287
+
288
+ ```typescript
289
+ import { customApi } from 'neo-open-api';
290
+
291
+ // 基本用法
292
+ const result = await customApi.run({
293
+ apiUrl: '/rest/custom/api/endpoint', // 自定义API地址
294
+ methodType: 'POST', // 请求方法,如 'GET', 'POST', 'PUT', 'DELETE' 等(可选,默认为 'POST')
295
+ data: { // 请求数据
296
+ key1: 'value1',
297
+ key2: 'value2'
298
+ }
299
+ });
300
+ ```
301
+
302
+ **参数说明:**
303
+ - `apiUrl`: 自定义API的完整地址(必填)
304
+ - `methodType` 或 `method`: 请求方法,默认为 'POST'
305
+ - `data`: 请求数据对象,会被包装在 `data` 字段中发送
306
+
307
+ **返回结果:**
308
+ ```typescript
309
+ {
310
+ status: boolean, // 返回 true 表示执行成功
311
+ code: number | string, // 返回码
312
+ msg: string, // 一般用于返回错误信息
313
+ data: any // API返回的数据
314
+ }
315
+ ```
316
+
317
+ **使用示例:**
318
+ ```typescript
319
+ import { customApi } from 'neo-open-api';
320
+
321
+ // 执行自定义API
322
+ const result = await customApi.run({
323
+ apiUrl: '/rest/custom/api/processData',
324
+ methodType: 'POST',
325
+ data: {
326
+ param1: 'value1',
327
+ param2: 'value2'
328
+ }
329
+ });
330
+ ```
247
331
 
248
- ### 4. 默认复用平台第三方依赖
332
+ ### 5. 默认复用平台第三方依赖
249
333
 
250
334
  自定义组件构建过程中默认会剔除掉平台已有依赖模块(比如 antd、echarts、axios、lodash 等),确保自定义组件构建后的资源体积较小。
251
335
 
@@ -276,7 +360,7 @@ module.exports = {
276
360
 
277
361
  > **注意**:自定义组件中请使用依赖包支持的版本,如版本不匹配运行时可能出现异常。
278
362
 
279
- ### 5. 本地调试自定义组件
363
+ ### 6. 本地调试自定义组件
280
364
 
281
365
  #### 步骤 1:启动外链调试模式
282
366
 
@@ -294,7 +378,7 @@ neo linkDebug
294
378
 
295
379
  页面设计器开启 debug 模式后,左侧会展示**外部链接**管理面板。将第 1 步生成的「外链脚本地址」添加进来,即可在此页面设计器 / 组件物料面板中看到对应自定义组件。
296
380
 
297
- ### 6. 发布自定义组件至 NeoCRM
381
+ ### 7. 发布自定义组件至 NeoCRM
298
382
 
299
383
  执行 `neo push cmp` 即可构建并发布自定义组件至 NeoCRM 平台,其构建后资源也会上传到 NeoCRM 平台端提供的 CDN 中。
300
384
 
@@ -342,7 +426,7 @@ A: 请检查 `neo.config.js` 文件中是否配置了 `neoConfig.auth`,确保
342
426
 
343
427
  发布成功后,即可在对应租户环境下的页面设计器和表单设计器中使用此自定义组件。
344
428
 
345
- ### 7. 拉取线上自定义组件至本地项目
429
+ ### 8. 拉取线上自定义组件至本地项目
346
430
 
347
431
  执行 `neo pull cmp` 即可从 NeoCRM 平台拉取自定义组件源码到当前项目。该命令会将线上自定义组件的源码下载并解析到当前项目的 `src/components` 目录下。
348
432
 
@@ -370,7 +454,7 @@ neo pull cmp -n xxCmp
370
454
  - 如果组件源码中包含新增的依赖包,拉取完成后会提示执行 `npm install` 或 `yarn install`
371
455
  - zip 源文件会保留在 `.neo-cli/zip-source` 目录下,可手动删除
372
456
 
373
- ### 8. 删除线上自定义组件
457
+ ### 9. 删除线上自定义组件
374
458
 
375
459
  执行 `neo delete cmp` 即可从 NeoCRM 平台删除指定的自定义组件。该命令会删除平台上的自定义组件,删除后该组件将无法在页面设计器和表单设计器中使用。
376
460
 
@@ -397,7 +481,7 @@ neo delete cmp -n xxCmp
397
481
  - ⚠️ **影响范围**:删除组件后,所有使用该组件的页面和表单将受到影响,请确保没有正在使用的场景
398
482
  - 💡 **建议先备份**:删除前建议先使用 `neo pull cmp` 拉取组件源码到本地进行备份
399
483
 
400
- ### 9. 发布自定义组件至 CDN
484
+ ### 10. 发布自定义组件至 CDN
401
485
 
402
486
  执行 `neo publish2oss` 即可构建对应自定义组件,并自动将构建后资源上传到对象存储(OSS)中。
403
487
 
package/bin/neo.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- require('../src/module/index');
2
+ require('../src/index');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo-cmp-cli",
3
- "version": "1.8.1",
3
+ "version": "1.8.3",
4
4
  "description": "Neo 自定义组件开发工具,支持react 和 vue2.0技术栈。",
5
5
  "keywords": [
6
6
  "neo-cli",
@@ -11,9 +11,10 @@
11
11
  "bin": {
12
12
  "neo": "./bin/neo.js"
13
13
  },
14
- "main": "src/module/main.js",
14
+ "main": "src/main.js",
15
15
  "scripts": {
16
16
  "neo": "neo",
17
+ "build2lib": "",
17
18
  "format": "prettier --write \"src/**/**/*.{js,jsx,vue,tsx,ts,scss,less,json}\""
18
19
  },
19
20
  "files": [
@@ -41,7 +42,7 @@
41
42
  },
42
43
  "dependencies": {
43
44
  "adm-zip": "^0.5.10",
44
- "akfun": "^5.1.12",
45
+ "akfun": "^6.0.0",
45
46
  "axios": "^0.27.2",
46
47
  "babel-plugin-import": "^1.13.8",
47
48
  "chalk": "^4.0.0",
@@ -66,8 +67,8 @@
66
67
  "prettier": "^2.0.5"
67
68
  },
68
69
  "engines": {
69
- "node": ">= 10.13.0",
70
- "npm": ">= 6.4.1"
70
+ "node": ">= 16.0.0",
71
+ "npm": ">= 8.0.0"
71
72
  },
72
73
  "browserslist": [
73
74
  "> 1%",
@@ -3,21 +3,21 @@ const yargs = require('yargs'); // 命令行工具
3
3
  const chalk = require('chalk'); // 带样式的log输出
4
4
  const inquirer = require('inquirer'); // 问答式交互
5
5
  const ora = require('ora');
6
- const neoInit = require('./neoInit.js');
7
- const neoInitByCopy = require('./neoInitByCopy.js');
8
- const inspect = require('./inspect.js'); // 输出当前项目配置文件
9
- const neoConfigInit = require('../utils/neoConfigInit.js');
10
- const { validateProjectName } = require('../utils/projectNameValidator.js');
11
- const mainAction = require('./main.js'); // 入口文件
12
- const getCmpTypeByDir = require('../utils/cmpUtils/getCmpTypeByDir.js');
13
- const NeoService = require('../neo/neoService.js');
14
- const NeoLoginService = require('../neo/neoLogin.js');
15
- const curConfig = require('../config/index'); // 获取当前项目根目录下的配置文件
16
- const hasNeoProject = require('../utils/projectUtils/hasNeoProject.js');
17
- const consoleTag = require('../utils/neoParams').consoleTag;
18
- const { errorLog, successLog } = require('../utils/common');
6
+ const neoInit = require('./module/neoInit.js');
7
+ const neoInitByCopy = require('./module/neoInitByCopy.js');
8
+ const inspect = require('./module/inspect.js'); // 输出当前项目配置文件
9
+ const neoConfigInit = require('./utils/neoConfigInit.js');
10
+ const { validateProjectName } = require('./utils/projectNameValidator.js');
11
+ const getCmpTypeByDir = require('./utils/cmpUtils/getCmpTypeByDir.js');
12
+ const NeoService = require('./neo/neoService.js');
13
+ const NeoLoginService = require('./neo/neoLogin.js');
14
+ const curConfig = require('./config/index'); // 获取当前项目根目录下的配置文件
15
+ const hasNeoProject = require('./utils/projectUtils/hasNeoProject.js');
16
+ const consoleTag = require('./utils/neoParams').consoleTag;
17
+ const { errorLog, successLog } = require('./utils/common');
19
18
  // neo 的 package 文件
20
- const neoPackage = require('../../package.json');
19
+ const neoPackage = require('../package.json');
20
+ const mainAction = require('./main.js'); // 入口文件
21
21
 
22
22
  const titleTip = function (msg) {
23
23
  return chalk.green(chalk.bold(msg));
@@ -1,23 +1,23 @@
1
1
  const akfun = require('akfun');
2
2
  const _ = require('lodash');
3
- const neoInit = require('./neoInit');
4
- const neoInitByCopy = require('./neoInitByCopy');
5
- const inspect = require('./inspect');
6
- const neoConfigInit = require('../utils/neoConfigInit.js');
7
- const { consoleTag } = require('../utils/neoParams');
8
- const curConfig = require('../config/index'); // 获取当前项目根目录下的配置文件
9
- const publish2oss = require('../oss/publish2oss');
10
- const pushCmp = require('../utils/cmpUtils/pushCmp');
11
- const previewCmp = require('../utils/cmpUtils/previewCmp');
12
- const generateEntries = require('../utils/generateEntries');
13
- // const { MFPlugins } = require('../neo/webpack.mf');
14
- const createCmpByTemplate = require('../utils/cmpUtils/createCmpByTemplate');
15
- const createCmpProjectByTemplate = require('../utils/projectUtils/createCmpProjectByTemplate');
16
- const pullCmp = require('../utils/cmpUtils/pullCmp');
17
- const deleteCmp = require('../utils/cmpUtils/deleteCmp');
18
- const openProject = require('../utils/projectUtils/openProject');
19
- const { configureNeoBuild } = require('../utils/configureNeoBuild');
20
- const { errorLog, successLog } = require('../utils/common');
3
+ const neoInit = require('./module/neoInit');
4
+ const neoInitByCopy = require('./module/neoInitByCopy');
5
+ const inspect = require('./module/inspect');
6
+ const neoConfigInit = require('./utils/neoConfigInit.js');
7
+ const { consoleTag } = require('./utils/neoParams');
8
+ const curConfig = require('./config/index'); // 获取当前项目根目录下的配置文件
9
+ const publish2oss = require('./oss/publish2oss');
10
+ const pushCmp = require('./utils/cmpUtils/pushCmp');
11
+ const previewCmp = require('./utils/cmpUtils/previewCmp');
12
+ const generateEntries = require('./utils/generateEntries');
13
+ // const { MFPlugins } = require('./neo/webpack.mf');
14
+ const createCmpByTemplate = require('./utils/cmpUtils/createCmpByTemplate');
15
+ const createCmpProjectByTemplate = require('./utils/projectUtils/createCmpProjectByTemplate');
16
+ const pullCmp = require('./utils/cmpUtils/pullCmp');
17
+ const deleteCmp = require('./utils/cmpUtils/deleteCmp');
18
+ const openProject = require('./utils/projectUtils/openProject');
19
+ const { configureNeoBuild } = require('./utils/configureNeoBuild');
20
+ const { errorLog, successLog } = require('./utils/common');
21
21
 
22
22
  const getValue = (originValue, defaultValue) => {
23
23
  return originValue !== undefined ? originValue : defaultValue;
@@ -9,27 +9,27 @@ const { errorLog } = require('../utils/common');
9
9
  const templateList = {
10
10
  react: {
11
11
  projectName: 'react-custom-cmp-template',
12
- dir: path.resolve(__dirname, '../template/react-custom-cmp-template')
12
+ dir: path.resolve(__dirname, '../../template/react-custom-cmp-template')
13
13
  },
14
14
  'react-ts': {
15
15
  projectName: 'react-ts-custom-cmp-template',
16
- dir: path.resolve(__dirname, '../template/react-ts-custom-cmp-template')
16
+ dir: path.resolve(__dirname, '../../template/react-ts-custom-cmp-template')
17
17
  },
18
18
  antd: {
19
19
  projectName: 'antd-custom-cmp-template',
20
- dir: path.resolve(__dirname, '../template/antd-custom-cmp-template')
20
+ dir: path.resolve(__dirname, '../../template/antd-custom-cmp-template')
21
21
  },
22
22
  echarts: {
23
23
  projectName: 'echarts-custom-cmp-template',
24
- dir: path.resolve(__dirname, '../template/echarts-custom-cmp-template')
24
+ dir: path.resolve(__dirname, '../../template/echarts-custom-cmp-template')
25
25
  },
26
26
  neo: {
27
27
  projectName: 'neo-custom-cmp-template',
28
- dir: path.resolve(__dirname, '../template/neo-custom-cmp-template')
28
+ dir: path.resolve(__dirname, '../../template/neo-custom-cmp-template')
29
29
  },
30
30
  vue2: {
31
31
  projectName: 'vue2-custom-cmp-template',
32
- dir: path.resolve(__dirname, '../template/vue2-custom-cmp-template')
32
+ dir: path.resolve(__dirname, '../../template/vue2-custom-cmp-template')
33
33
  }
34
34
  };
35
35
 
@@ -1,12 +1,12 @@
1
1
  // 模块联邦插件
2
2
  const webpack = require('webpack');
3
3
  const { ModuleFederationPlugin } = require('webpack').container;
4
+ const { getConfigObj } = require('akfun');
4
5
 
5
6
  // 解析 webpack 模块联邦 remotes 中的变量
6
7
  const ExternalTemplateRemotesPlugin = require('external-remotes-plugin');
7
8
 
8
9
  const { catchCurPackageJson } = require('../utils/pathUtils');
9
- const getConfigObj = require('../utils/getConfigObj');
10
10
 
11
11
  // 获取当前项目的package文件
12
12
  const currentPackageJsonDir = catchCurPackageJson();
@@ -3,8 +3,8 @@ const fs = require('fs');
3
3
  const path = require('path');
4
4
  const _ = require('lodash');
5
5
  const ora = require('ora');
6
+ const { getConfigObj } = require('akfun');
6
7
  const { catchCurPackageJson } = require('../utils/pathUtils');
7
- const getConfigObj = require('../utils/getConfigObj');
8
8
  const updatePublishLog = require('../utils/projectUtils/updatePublishLog');
9
9
  const { errorLog, warningLog, successLog } = require('../utils/common');
10
10
 
@@ -113,14 +113,14 @@ function formatConfigObject(obj, indent = 0, fileDir = '') {
113
113
  * @param {*} cmpZipUrl 自定义组件源码文件地址(zip包地址)
114
114
  * @param {*} cmpName 自定义组件名称
115
115
  * @param {*} componentBaseDir 自定义组件目录
116
- *
116
+ *
117
117
  * 拉取线上自定义组件源码 规则:
118
118
  * 1、对于 组件源码中 src/components 中的所有文件 copy 至 当前项目 src/components,非覆盖式(copy 前判断是否存在);
119
119
  * 2、对于 组件源码中的 配置文件(neo.config.js)内容 和 当前项目配置 进行 非覆盖式 merge 处理;
120
120
  * 3、对于 组件源码中的 tsconfig.json 文件内容 和 当前项目 tsconfig  进行 非覆盖式 merge 处理;
121
121
  * 4、对于 组件源码中的 package.json 文件内容 和 当前项目 package.json  进行 非覆盖式 merge 处理,并识别新增 依赖,提示用户 重新安装依赖
122
122
  */
123
- module.exports = async function (cmpZipUrl, option = {}) {
123
+ async function createCmpByZip(cmpZipUrl, option = {}) {
124
124
  const { token, cmpName, componentBaseDir = './src/components' } = option || {};
125
125
  const finalCmpName = cmpName;
126
126
 
@@ -158,7 +158,7 @@ module.exports = async function (cmpZipUrl, option = {}) {
158
158
  response = await axios.get(cmpZipUrl, {
159
159
  headers: {
160
160
  Authorization: `Bearer ${token}`,
161
- 'xsy-inner-source': 'bff',
161
+ 'xsy-inner-source': 'bff'
162
162
  },
163
163
  responseType: 'arraybuffer',
164
164
  timeout: 60000, // 60秒超时
@@ -171,7 +171,7 @@ module.exports = async function (cmpZipUrl, option = {}) {
171
171
  }
172
172
  });
173
173
  } catch (axiosError) {
174
- const errorMessage = axiosError.response
174
+ const errorMessage = axiosError.response
175
175
  ? `下载文件失败: HTTP ${axiosError.response.status} - ${axiosError.message}`
176
176
  : `下载文件失败: ${axiosError.message}`;
177
177
  errorLog(errorMessage, spinner);
@@ -403,4 +403,6 @@ module.exports = async function (cmpZipUrl, option = {}) {
403
403
 
404
404
  return false;
405
405
  }
406
- };
406
+ }
407
+
408
+ module.exports = createCmpByZip;
@@ -1,6 +1,6 @@
1
1
  const _ = require('lodash');
2
+ const { getConfigObj } = require('akfun');
2
3
  const { catchCurPackageJson } = require('../pathUtils');
3
- const getConfigObj = require('../getConfigObj');
4
4
  const ora = require('ora');
5
5
  const NeoService = require('../../neo/neoService');
6
6
  const { getFramework, errorLog, successLog } = require('../common');
@@ -1,8 +1,8 @@
1
1
  const fs = require('fs');
2
2
  const path = require('path');
3
3
  const _ = require('lodash');
4
+ const { getConfigObj } = require('akfun');
4
5
  const { catchCurPackageJson } = require('../pathUtils');
5
- const getConfigObj = require('../getConfigObj');
6
6
  const ora = require('ora');
7
7
  const NeoService = require('../../neo/neoService');
8
8
  const { getFramework, errorLog, successLog } = require('../common');
@@ -12,7 +12,6 @@ const createCmpProjectZip = require('../projectUtils/createCmpProjectZip');
12
12
  const currentPackageJsonDir = catchCurPackageJson();
13
13
  const currentPackageJson = getConfigObj(currentPackageJsonDir);
14
14
 
15
-
16
15
  // 获取属性 propsSchema 数据结构
17
16
  const getPropsSchema = (propsSchema = []) => {
18
17
  return propsSchema.map((item) => {
@@ -98,10 +97,10 @@ const buildComponentData = async (assetsRoot, cmpInfo) => {
98
97
  label: modelInstance.label || cmpType,
99
98
  description: modelInstance.description || '',
100
99
  componentCategory: (modelInstance.tags || ['自定义组件']).join(','),
101
- targetPage: (modelInstance.targetPage || ['customPage']), // 支持的页面类型
102
- targetObject: (modelInstance.targetObject || ['all']), // 支持的实体类型
103
- targetApplication: (modelInstance.targetApplication || ['all']), // 支持的应用类型
104
- targetDevice: (modelInstance.targetDevice || 'all'), // 支持的设备类型。只有这个字段是字符串数值,其他都是数组
100
+ targetPage: modelInstance.targetPage || ['customPage'], // 支持的页面类型
101
+ targetObject: modelInstance.targetObject || ['all'], // 支持的实体类型
102
+ targetApplication: modelInstance.targetApplication || ['all'], // 支持的应用类型
103
+ targetDevice: modelInstance.targetDevice || 'all', // 支持的设备类型。只有这个字段是字符串数值,其他都是数组
105
104
  iconUrl: modelInstance.iconSrc || modelInstance.iconUrl,
106
105
  defaultProps: JSON.stringify(modelInstance.defaultComProps || {}),
107
106
  previewProps: JSON.stringify(modelInstance.previewComProps || {}),
@@ -116,7 +115,10 @@ const buildComponentData = async (assetsRoot, cmpInfo) => {
116
115
  modelInstance.enableDuplicate !== undefined ? modelInstance.enableDuplicate : true
117
116
  };
118
117
 
119
- console.log(`自定义组件模型信息(${cmpType}):`, _.omit(curCmpInfo, ['assetFile', 'modelAssetFile', 'cssAssetFile', 'codeLibFile']));
118
+ console.log(
119
+ `自定义组件模型信息(${cmpType}):`,
120
+ _.omit(curCmpInfo, ['assetFile', 'modelAssetFile', 'cssAssetFile', 'codeLibFile'])
121
+ );
120
122
  return curCmpInfo;
121
123
  } catch (error) {
122
124
  errorLog(`自定义组件模型文件解析失败 (${modelFile || '未知路径'}): ${error.message}`);
@@ -4,7 +4,7 @@ const { resolveToCurrentRoot } = require('../pathUtils');
4
4
  /**
5
5
  * 更新发布日志
6
6
  */
7
- module.exports = (curHistoryData) => {
7
+ module.exports = function (curHistoryData) {
8
8
  // 创建存放 cli 的临时目录
9
9
  const cliTempDir = resolveToCurrentRoot('./.neo-cli');
10
10
  if (!fs.existsSync(cliTempDir)) {
package/test/demo.js CHANGED
@@ -1,4 +1,4 @@
1
- const {neoInit, neoConfigInit, inspect, preview, debug, build2lib, build2esm, neoInitByCopy, previewCmp } = require('../src/module/main');
1
+ const {neoInit, neoConfigInit, inspect, preview, debug, build2lib, build2esm, neoInitByCopy, previewCmp } = require('../src/main');
2
2
  const getEntries = require('../src/utils/projectUtils/getEntries');
3
3
  const getEntriesWithAutoRegister = require('../src/utils/projectUtils/getEntriesWithAutoRegister');
4
4
  // inspect('dev');
package/test/demo3.js CHANGED
@@ -1,3 +1,3 @@
1
- const openEditor = require('../src/module/main').openEditor;
1
+ const openEditor = require('../dist/main.js').openEditor;
2
2
 
3
3
  openEditor('auto', 'src');
@@ -0,0 +1,77 @@
1
+ 'use strict';
2
+ const path = require('path');
3
+ // 统一路径解析
4
+ function resolve(dir) {
5
+ return path.resolve(__dirname, dir);
6
+ }
7
+
8
+ // 包括生产和开发的环境配置信息
9
+ module.exports = {
10
+ settings: {
11
+ enableESLint: false, // 调试模式是否开启ESLint,默认开启ESLint检测代码格式
12
+ enableESLintFix: false, // 是否自动修正代码格式,默认不自动修正
13
+ enableStyleLint: false, // 是否开启StyleLint,默认开启ESLint检测代码格式
14
+ enableStyleLintFix: false // 是否需要StyleLint自动修正代码格式
15
+ },
16
+ webpack: {
17
+ resolve: {
18
+ // webpack的resolve配置
19
+ extensions: ['.js', '.json'], // 用于配置webpack在尝试过程中用到的后缀列表
20
+ alias: {
21
+ '@': resolve('src'),
22
+ },
23
+ // conditionNames: ['require']
24
+ },
25
+ target: 'node',
26
+ createDeclaration: true, // 打包时是否创建ts声明文件
27
+ ignoreNodeModules: false, // 打包时是否忽略 node_modules
28
+ allowList: [], // ignoreNodeModules为true时生效
29
+ externals: [],
30
+ projectDir: ['src'],
31
+ // cssLoaderUrl: true,
32
+ moduleRules: [], // 用于配置自定义loaders
33
+ plugins: [], // 用于配置自定义plugins
34
+ },
35
+ build2lib: {
36
+ entry: {
37
+ index: './src/index.js', // 构建lib的入口
38
+ main: './src/main.js', // 构建lib的入口
39
+ },
40
+ output: {
41
+ filename: '[name].js',
42
+ library: {
43
+ type: 'commonjs2', // 使用 CommonJS 模式构建
44
+ }
45
+ },
46
+ // 用于构建生产环境代码的相关配置信息
47
+ NODE_ENV: 'development', // development / production
48
+ assetsRoot: resolve('./dist'), // 打包后的文件绝对路径(物理路径)
49
+ assetsPublicPath: '/', // 设置静态资源的引用路径(根域名+路径)
50
+ assetsSubDirectory: '', // 资源引用二级路径
51
+ ignoreNodeModules: true, // 打包时是否忽略 node_modules
52
+ // allowList: ['vue'], // ignoreNodeModules为true时生效
53
+ productionSourceMap: false,
54
+ productionGzip: false,
55
+ productionGzipExtensions: ['js', 'css', 'json'],
56
+ // bundleAnalyzerReport: false
57
+ },
58
+ build2esm: {
59
+ type: 'js',
60
+ compress: false,
61
+ input: {
62
+ index: resolve('src/index.js'),
63
+ main: resolve('src/main.js')
64
+ },
65
+ output: {
66
+ dir: resolve('dist'),
67
+ format: 'cjs', // which can be one of "amd", "cjs", "system", "es", "iife" or "umd".
68
+ preserveModules: true, // 关键:保留原始模块结构,不合并文件
69
+ preserveModulesRoot: 'src', // 指定模块根目录
70
+ entryFileNames: '[name].js',
71
+ exports: 'auto', // 自动处理导出(适配 ES 模块的默认导出/命名导出)
72
+ // interop: 'auto' // 自动处理 CJS/ES 模块互操作(如 __esModule 标记)
73
+ },
74
+ // 不将以下依赖打包到输出文件中
75
+ excludeList: []
76
+ }
77
+ };
@@ -1,12 +0,0 @@
1
- /*
2
- prettier 配置文件
3
- 更多配置信息:https://prettier.io/docs/en/options.html
4
- */
5
- module.exports = {
6
- semi: true, // Semicolons 分号,默认需要分号
7
- tabWidth: 2, // 空格,默认 2,
8
- useTabs: false,
9
- singleQuote: true, // 单引号还是双引号,默认为false 双引号
10
- trailingComma: 'all', // 逗号
11
- jsxBracketSameLine: false, // 默认为false,Put the > of a multi-line JSX element at the end of the last line instead of being alone on the next line (does not apply to self closing elements).
12
- };