@epxing/cli 0.5.0-beta.13 → 0.5.0-beta.14

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/API.md CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  独立工程命令行工具,终端命令名为 epxing。/vite 提供产品构建插件,根入口不提供业务运行时。
4
4
 
5
- 本页对应包版本 `0.5.0-beta.13`。导出名、子路径和签名从当前源码、package.json 与类型声明生成。
5
+ 本页对应包版本 `0.5.0-beta.14`。导出名、子路径和签名从当前源码、package.json 与类型声明生成。
6
6
 
7
7
  ## 安装与使用
8
8
 
9
9
 
10
10
  ```sh
11
- npm install -g @epxing/cli@0.5.0-beta.13
11
+ npm install -g @epxing/cli@0.5.0-beta.14
12
12
  ```
13
13
 
14
14
 
package/README.md CHANGED
@@ -4,7 +4,9 @@
4
4
 
5
5
  独立的工程开发工具,包含交互菜单、开发服务、产品库构建、创建、Vue3 迁移、静态检查和升级技能安装。创建和升级默认使用 `@epxing/*` 独立包,版本留空时查询最新 `beta` 并固定到具体版本,没有 `beta` 时使用 `latest`;可用 `--packages-version` 指定版本或标签。CLI 使用自己的版本号。创建和升级会生成产品使用说明;`@epxing/cli/vite` 提供产品构建插件,不依赖聚合包中的构建工具。
6
6
 
7
- 本批测试版本:`@epxing/cli@0.5.0-beta.13`,平台包 `5.3.0-beta.5`,均使用 npm 公网 `beta` 标签。CLI 与平台独立版本,本次不升级平台包。完整流程见文档站“CLI 创建、升级与产品使用”;各包公开 API 随安装包的 `API.md` 提供。
7
+ 本批测试版本:`@epxing/cli@0.5.0-beta.14`,平台包 `6.1.0-beta`,均使用 npm 公网 `beta` 标签。CLI 与平台独立版本。完整流程见文档站“CLI 创建、升级与产品使用”;各包公开 API 随安装包的 `API.md` 提供。
8
+
9
+ `0.5.0-beta.14` 强化 F28 表单上下文透传检查:沿发送端、继承/包装组件、懒加载页签和原生根核对 form prop,补齐逐页签验收与宿主制品核对;保留 class/style、事件和上下文,不自动批量添加 prop 或关闭 attrs 继承。
8
10
 
9
11
  `0.5.0-beta.13` 根据考核迁移报告补充插槽作用域、响应式状态、树刷新、异步依赖与移动布局复核。列表只读扫描新增同层插槽参数条件检测,覆盖解构、别名和局部变量遮蔽;模板解析失败非零退出,不自动改写业务条件。新增 F32–F34,明确历史报告对账和未定位问题的验收边界。
10
12
 
package/dist/cli.mjs CHANGED
File without changes
@@ -113,6 +113,7 @@ Claude Code 项目技能放在 `.claude/skills/epxing-frontend-vue3-migrate/`,
113
113
  | `[vuex] duplicate getter key` | 库被装了两次(本地 + 远程) |
114
114
  | `[vite:vue] reading 'type'`(无行号,某 .vue) | gogocode 漏转元素上的 `slot="x"`(F1) |
115
115
  | `组件注册名冲突:… copy.vue` | 垃圾副本文件撞名(F8,`find src -iname "*copy*"`) |
116
+ | 切换页签或打开详情时报 `Cannot convert object to primitive value`、`setAttribute` 异常 | 按 F28 追踪 `form` 实例的传参链;接收组件未声明 prop 时,Vue3 可能把它透传到原生 DOM。后续 vnode/parentNode 异常先回溯首条错误 |
116
117
  | `npm i` 显示成功但 vite/依赖没装上 | `node-sass`/`fibers` 原生编译挂、exit code 被管道吞(F7) |
117
118
  | `[loadComponent] 找不到 epx-xxx`(本地新迁的库) | 源码版本落后线上部署、缺组件(`verify-components.mjs --online` 对齐) |
118
119
 
@@ -128,6 +129,8 @@ Claude Code 项目技能放在 `.claude/skills/epxing-frontend-vue3-migrate/`,
128
129
 
129
130
  **本地包链接不等于加载源码**:核对安装包 exports 实际指向 src 还是 dist。修改本地链接平台源码后,若消费方读取 dist,应在授权范围重建对应包,并重启/强制刷新消费方 Vite 预构建缓存;记录实际运行参数声明、请求来源与制品时间。区分 main.js 安装产品源码的开发应用与远程 UMD/按需制品宿主,两者验收分别记录,不能互相代替。按 F28 实际切换全部目标页签后再报告本地修复结果。
130
131
 
132
+ **表单上下文透传必查**:升级后即使默认页无报错,也按 [F28](pitfalls.md#f28-审核详情空白加载遮罩残留与懒加载页签计数) 从 `:form`、JSX/render 的 `form`、`v-bind` 对象及 `$attrs` 展开追踪实际接收端,检查产品组件、平台基类、包装组件和懒加载页签的有效 props。只修已报错组件不算完成;未激活的页签记待验证。对确定接收表单实例的组件声明正确 prop,并保留上下文转发及 class/style 等合法 attrs;不能给所有组件盲加 prop,也不能全局过滤 attrs 掩盖遗漏。
133
+
131
134
  **目标宿主共享依赖必查**:用户指定了运行地址时,以该宿主为验收目标,不能用本地新版包代替。按 F26 核对最终 deps 清单和共享 shim 实际使用的包/导出;预加载后应在 `__EPX_PACKAGES__` 对应命名空间拿到同步真身。旧 `window.frame` 有组件不代表独立共享包已发布组件;继承基类缺失时先修共享加载桥并发布宿主,再用新会话复验,不能给 `$component`/`upPage` 填空对象掩盖。
132
135
 
133
136
  **当前角色必须迁移到平台上下文**:按 F27 扫描并修复当前角色 ID/code 的取值和消费点,ID 使用 `$currentRoleId`(或 `$currentRole?.id`),code 使用 `$currentRole?.code`。已继承平台基类或公共组件混入的直接使用;普通自定义组件接入 `@epxing/core` 的 `ComponentMixin`。不自行解析地址、不从 localStorage 恢复当前角色、不额外查询角色列表匹配当前角色;角色管理页的编辑值和业务角色字段须保留各自语义。已授权升级中由 AI 完成可确认的迁移,并验证旧地址、新菜单地址及角色切换。
@@ -196,6 +199,7 @@ Claude Code 项目技能放在 `.claude/skills/epxing-frontend-vue3-migrate/`,
196
199
  7. 按 G 节核对适用的交互、上下文、浮层、表格、设计器和性能问题。区分已检查不适用、已验证通过、已改待验证和阻塞;临时浏览器修正、平台兼容单测或旧会话交付记录,不能作为当前产品新制品已通过的证据。
197
200
  8. 使用本地替换库验收时,记录入口、CSS、清单和实际加载分片的响应与磁盘一致、入口加载方式正确,以及详情页实测结果。存在加载语法错误时先修接入;接口返回空列表时记录查询参数与配置依据,不为填充页面写入默认业务数据。
198
201
  9. 核对 F27 当前角色迁移:ID/code 与接口及权限判断语义一致;旧含角色地址、新不含角色菜单地址、切换角色及缓存组件复用均取当前应用角色。普通组件已接入公共混入,未引入地址/存储兜底或重复初始化。
202
+ 10. 核对 F28 的 form 接收链:已逐个激活方案等业务页签及嵌套页签,检查有效 props、首条异常和真实内容,确认表单实例未落到原生 DOM,样式及上下文仍可用;平台源码修复已核对目标宿主制品,未发布或未激活的项不得标通过。
199
203
 
200
204
  ## 常见错误
201
205
 
@@ -711,6 +711,12 @@ export default {
711
711
 
712
712
  审核列表/卡片已返回数据但详情空白时,先捕获首条异常及实际接收组件。平台表单会下发 `form` 实例;未声明为 prop 的接收组件在 Vue3 自动继承 attrs 时可能将实例写到原生 DOM,报 `setAttribute: Cannot convert object to primitive value`,后续可能连带出现 null vnode/parentNode 异常。工资审核页实证接收端为平台 Card、EntityList(含产品派生列表)。修复接收端声明 `form: Object`,保留 class/style 继承及上下文;不要 stringify 实例、吞渲染异常或批量关闭 inheritAttrs。扫描同一传参链的其他接收端,以 null 原型对象或真实 Vue 实例验证 form 不落 DOM、外部样式仍落根;平台源码修复须另核对目标宿主发布版本,不能只发布产品包。
713
713
 
714
+ **按接收链检查,不能只按报错组件补丁**:方案标签页等业务容器同样可能接收平台表单实例,该问题不限定于审核页或列表。升级时先搜索模板 `:form`、JSX/render 的 `form`、`v-bind` 对象与 `$attrs` 展开,沿动态组件、包装层和懒加载子项追踪到实际接收端;检查 `extends`/mixins 合并后的有效 props,不能仅因本文件没有声明就判断遗漏。静态检索只列候选,动态配置与未展开对象仍须查来源,零命中不代表无需运行验证。
715
+
716
+ 已确认接收实例的 Options API 组件声明 `props: { form: Object }`,`<script setup>` 在已有 `defineProps` 中补上相同契约;保留原 props 与必要的子组件转发。prop 声明只阻止该层自动落 DOM,若后续显式把 form 放入原生元素的 `v-bind`/属性 spread,仍需在该原生边界移除这一非 DOM 值。不要给所有组件盲加 prop,不修改表单实例为字符串,不用重试、空对象或整体关闭 attrs 继承绕过异常。`inheritAttrs: false` 的组件还须检查显式 `$attrs` 的去向。
717
+
718
+ **回归判据**:用 null 原型对象或真实表单实例作为输入,检查实际接收值身份不变、根 DOM 没有非业务用途的 form 属性、控制台无首条转换异常,并验证外传 class/style、事件及子组件上下文仍正常。逐个激活方案页签、非默认及嵌套页签,再验证切换返回和缓存复用后的真实内容。记录发送端→接收端→原生根、有效 prop 来源、实际加载版本及未测分支;不能用普通 `{}` 恰好可转字符串、构建成功或默认页正常代替该项验收。原生表单控件合法的字符串 form ID 关联需保留,不能全仓删除同名属性。
719
+
714
720
  若加载变量已 false 但遮罩仍在,检查实际可见节点、VNode 分支及指令生命周期。JSX/render 在有/无数据分支复用同类型根 div,仅空分支带 v-loading 时可能留下旧遮罩;给互斥分支不同 key 或统一指令绑定,验证加载→内容、空结果及请求失败,不以手动删除遮罩验收。同时检查异步链空结果是否结束加载。模板 v-if 的编译器处理与手写 render 不同,静态命中不等于缺陷;按实际分支检查。
715
721
 
716
722
  页签计数读取子项配置前,核对懒加载实例及 itemConfigs 是否就绪。配置尚未就绪时延后该项统计,不能用空配置发起无范围查询,也不能将计数异常认作后端无数据。已有模板/实例配置来源按当前平台契约保留。
@@ -15,6 +15,7 @@
15
15
  | 历史列表翻页异常、分页弃用警告 | 模板事件与 JSX 事件命名不同;当前页/每页数更新;sizes 所需监听 | 翻页及切换页大小改变绑定值与请求参数;目标版本无对应警告 | [F30](../pitfalls.md#f30-布局分页及可选配置的静默回退) |
16
16
  | 页面贴边、卡片布局或弹窗对齐丢失 | render 根与 CSS 选择器不符、插槽后代缺 scopeId、选择框默认占满一行、父布局最小尺寸 | 实际继承/插槽链下计算样式正确;普通和窄容器可用;外部同名元素及其他页面不受影响 | F15、F19、F20、F30 |
17
17
  | 初次渲染异常,异步筛选或回显不更新 | data/props/computed 声明、普通 filters 字段误当旧过滤器、Vue2 模型、对象/数组监听 | 从空初值加载到结果;保留 0、false;回显、清空、再次读取和请求序列化一致 | F16、F24 |
18
+ | 方案等页签或详情报 setAttribute/对象转字符串异常 | form 实例从发送端经继承、包装和动态组件到实际接收端的有效 props,以及显式 attrs 展开的原生边界 | 逐个激活非默认/嵌套页签;实例不落 DOM,接收值及下传身份正确,class/style 和上下文保留;核对宿主实际制品 | [F28](../pitfalls.md#f28-审核详情空白加载遮罩残留与懒加载页签计数) |
18
19
  | 卡片标题错误、关闭图标后白屏、步骤选中混乱 | propsData 等旧结构、可选配置 null、当前项与完成数不同、页面参数类型 | 无图标/无标题分支仍可用;当前步骤可辨;回退和全部完成状态正确 | F22、F29、F30 |
19
20
  | 本地修了,目标站仍旧或空白 | 实际加载的宿主/产品版本与 JS、CSS、清单、分片;服务 500 与渲染异常分别取证 | 同批制品、正确 MIME/加载方式、真实页面操作;旧缓存或临时注入不能当发布生效 | D3、F23、G |
20
21
  | 库包夹带 index.html/制品不全 | 独立应用与远程库输出混淆、publicDir 复制、并发构建清理、懒加载清单遗漏 | 库入口与 CSS/依赖/分片匹配;应用构建按设计保留 HTML;上传形态完整 | B、C、下文制品检查 |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epxing/cli",
3
- "version": "0.5.0-beta.13",
3
+ "version": "0.5.0-beta.14",
4
4
  "description": "EPX 交互式工程开发、服务启动、构建、Vue3 迁移及技能安装工具",
5
5
  "type": "module",
6
6
  "bin": {
@@ -13,12 +13,6 @@
13
13
  "engines": {
14
14
  "node": ">=18"
15
15
  },
16
- "scripts": {
17
- "build": "node build.mjs",
18
- "test": "node --test test/cli.test.mjs test/platform-version.test.mjs test/lib-build-template.test.mjs test/library-public-config.test.mjs",
19
- "prepack": "node build.mjs",
20
- "prepublishOnly": "node ../../build/guard-publish-registry.mjs"
21
- },
22
16
  "devDependencies": {
23
17
  "@babel/parser": "7.29.3",
24
18
  "@vue/compiler-dom": "3.5.39",
@@ -35,5 +29,9 @@
35
29
  "default": "./dist/vite.mjs"
36
30
  },
37
31
  "./package.json": "./package.json"
32
+ },
33
+ "scripts": {
34
+ "build": "node build.mjs",
35
+ "test": "node --test test/cli.test.mjs test/platform-version.test.mjs test/lib-build-template.test.mjs test/library-public-config.test.mjs"
38
36
  }
39
- }
37
+ }