@fulgurjs/federation 5.7.0 → 5.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/CHANGELOG.md +22 -0
- package/DESIGN.md +3 -0
- package/README.en.md +316 -363
- package/README.md +264 -1182
- package/dist/bridge-app-react.cjs +5 -1
- package/dist/bridge-app-react.js +5 -1
- package/dist/{chunk-OLQGJR2Z.js → chunk-GLASM5EX.js} +47 -17
- package/dist/{chunk-NHSQHAS4.js → chunk-V6EASSCR.js} +1 -1
- package/dist/{chunk-WOYDFERL.js → chunk-X34EJB4H.js} +1 -1
- package/dist/index.cjs +117 -13
- package/dist/index.js +117 -13
- package/dist/react.d.ts +4 -0
- package/dist/runtime-entry.d.ts +4 -0
- package/dist/runtime.js +22 -21
- package/docs/API.en.md +328 -0
- package/docs/API.md +913 -0
- package/docs/webpack-mf-/345/257/271/347/205/247/344/270/216/347/274/272/345/217/243.md +64 -37
- package/examples/bridge/react-host/package-lock.json +4 -4
- package/examples/bridge/react-host/package.json +1 -1
- package/examples/bridge/react-remote/package-lock.json +4 -4
- package/examples/bridge/react-remote/package.json +1 -1
- package/examples/bridge/vue-host/package-lock.json +4 -4
- package/examples/bridge/vue-host/package.json +3 -3
- package/examples/bridge/vue-remote/package-lock.json +4 -4
- package/examples/bridge/vue-remote/package.json +1 -1
- package/examples/react/host/package-lock.json +4 -4
- package/examples/react/host/package.json +1 -1
- package/examples/react/remote/package-lock.json +4 -4
- package/examples/react/remote/package.json +1 -1
- package/examples/vue/host/package-lock.json +4 -4
- package/examples/vue/host/package.json +1 -1
- package/examples/vue/remote/package-lock.json +4 -4
- package/examples/vue/remote/package.json +1 -1
- package/package.json +6 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.8.0
|
|
4
|
+
|
|
5
|
+
- **修复:保留用户 manualChunks 时生产启动挂起/爆 TDZ(MC-FIX,rollup/vite 5–7 路径)**——此前「双向宿主 + 保留业务 manualChunks」与「纯远程 + manualChunks」的生产构建会零报错死锁或 `Cannot access 'x' before initialization`,唯一出路是停用 manualChunks(旧验收记录的"生产三前提①")。本轮在真实项目(MES admin,对象形式 vue-vendor/antd-vue-vendor 分组)复现并以 chunk 成员图 + 首错栈定位出三层叠加根因,全部修复:
|
|
6
|
+
- **MC-FIX-1(post 兜底改写缺 node_modules 闸门)**——`buildFallbackTransform`(D6 后置注入兜底,`fulgurjs:vue-post` 与 `fulgurjs:post-last` 共用)此前直接调用 `transformModule`,而 `allowNodeModules` 只存在于 ctx 声明、`transformModule` 从不读取——纯宿主构建里 2000+ 个 node_modules 模块(vue-router/ant-design-vue/element-plus…)对 shared 键的静态导入被错误门面化(pre 阶段闸门正确,post 兜底语义未对齐)。现补齐与 pre.transform 完全一致的 `isTransformableId(id, devSharedSelf || 纯remote || providerCjs)` 闸门。
|
|
7
|
+
- **MC-FIX-2(对象形式 manualChunks 包装漏 provider 隔离)**——函数形式包装自 5.2.1 起有 `providerChunkOf ?? userFn` 优先级,对象形式只查用户分组表:真实共享本体(vue)被用户 `vue-vendor` 组吞并与被改写的消费方(vue-router)同 chunk,构成「消费方 chunk →静态→ TLA 协商门面 →fallback 动态→ 消费方 chunk」自等待环,页面零报错卡加载(shareScopeMap 恒空、入口 init 永不执行)。现四处 manualChunks 包装(devSharedSelf 函数/对象、宿主隔离 函数/对象/无配置、远程 exposes combined)全部统一为 provider 隔离优先。
|
|
8
|
+
- **MC-FIX-2C(provider 闭包割裂 → 跨 chunk TDZ)**——仅按包目录前缀归组时,本体闭包内的第三方模块(如 @vue/compiler-dom 依赖的 entities)按共同消费方指纹落入用户 vendor 大组,provider chunk 长出指向用户组的静态边、用户组又静态依赖 provider chunk,环上求值顺序由入口导入序决定,provider chunk 先入环即 TDZ。新增 `providerChunkOfWithClosure`:manualChunks 成组期经 `meta.getModuleInfo` 从 provider 入口(Node 解析的 CJS 链 + Vite 解析的 ESM 链双种子)BFS 收集完整静态闭包并入 provider 组,provider chunk 成为零静态出边的叶子,环被彻底移除。
|
|
9
|
+
- 验收:单测 654→656(新增纯宿主 manualChunks 回归 + 死锁防线锚点迁移);e2e dev 43/43 + prod 28/28;真实项目 MES admin(对象分组)manualChunks 保留构建 → chunk 图无环 → 浏览器登录/菜单/深链正常,shareScope=vue@3.5.43;bpm/lowcode(函数形式全量 vendor 分组,最恶劣场景)chunk 图无环;双版本最小复现(host vue 3.5.13 × remote 3.4.38)singleton 协商收敛宿主实例。**旧文档中"必须停用 manualChunks"的兼容结论作废。**
|
|
10
|
+
- 版本 5.7.1 → 5.8.0(含 runtime 同步升版与产物再生)。
|
|
11
|
+
|
|
12
|
+
## 5.7.1
|
|
13
|
+
|
|
14
|
+
- React 桥接兼容 react-dom/client 的 default-only CJS 命名空间(Vite 6 + React 18),使用同一 renderer 完成真实提交与卸载。
|
|
15
|
+
|
|
16
|
+
- runtime gzip 预算 10240→10496B(实测 10273B):共享屏障及旧冻结内核兼容为必要逻辑增量,继续保留硬门禁。
|
|
17
|
+
|
|
18
|
+
- 修复同步消费拒绝异步 resolveShare 后的迟到 Promise 拒绝,避免额外 unhandledrejection。
|
|
19
|
+
- HTML 入口配置 runtimePlugins 时增加异步协商屏障;远程 expose 执行前准备共享决策,消费方门面保持原有同步形态。异步选择的外部条目与静态/动态实例统一复用;provider 失败后允许重新裁决。
|
|
20
|
+
- 首次消费者接管单例时按真实物理版本登记,不再把 React 18 实例填入标注 React 19 的槽位而绕过 strictVersion;另一版本的单例正在异步加载时拒绝同步接管,避免并发双实例。
|
|
21
|
+
- runtimePlugins 的相对路径以项目 root 解析,避免入口/虚拟模块位置改变后解析错误。
|
|
22
|
+
- 新增 demo/react-versions:React 19 嵌 React 18 隔离、异步 hook 覆盖首次静态导入、严格拒绝与版本对齐远程的同页恢复、Vue 宿主对齐 React 18。新增 Vite 6/8 dev+prod 浏览器 CI。
|
|
23
|
+
- 自定义无 HTML 的入口须先完成动态协商再执行消费者,已求值的静态绑定不能追溯改写。
|
|
24
|
+
|
|
3
25
|
## 5.7.0
|
|
4
26
|
|
|
5
27
|
- **修复:Vite 8 同步协商门面的共享语义补修(strictVersion 拒绝 + resolveShare 契约)**——5.6.0 引入的同步门面(V8-SYNC-FACADE)存在两处语义缺陷,本轮以 runtime 新决策入口 `loadShareSync` 统一修复,绑定门面/命名空间门面/CJS 垫片三条同步路径全部改走该入口(各引擎一致):
|
package/DESIGN.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# @fulgurjs/federation 设计方案 v0.2(全量对齐 Webpack MF 版)
|
|
2
2
|
|
|
3
|
+
> **当前状态索引(2026-10-03,5.7.1)**:本文是历史设计,早期“100% 配置/行为对齐”和里程碑状态不作为当前兼容承诺。当前为浏览器端 Vue 3 / React 18–19、子应用桥接及可选 URL 同步;能力和明确差异以 [当前对照表](docs/webpack-mf-对照与缺口.md) 与 [README](README.md) 为准。
|
|
4
|
+
|
|
5
|
+
|
|
3
6
|
> **品牌**:fulgurjs,拉丁语「闪电 · 辉光」,取自作者名中「烨」字的意译。
|
|
4
7
|
> 系列规划:`@fulgurjs/federation`(模块联邦)→ `@fulgurjs/micro`、`@fulgurjs/dts` …
|
|
5
8
|
> 内外命名统一 `fulgurjs`(`virtual:fulgurjs-*` 虚拟模块、`window.__FULGURJS_*` 调试出口、`FgError` / MFU 错误码)。
|