Skip to content

EMP v4.0.1 — Rspack 2.2 / Module Federation 2.9

Latest

Choose a tag to compare

@ckken ckken released this 01 Sep 06:15
1491843

EMP v4.0.1 release cover

EMP v4.0.1 已发布,17 个核心 @empjs/* 包已统一更新到 npm latest

核心升级

  • Rspack core / dev-server 升级到 2.2.1,Rsbuild 统一到 2.2.1
  • Module Federation 构建、runtime、SDK 与 DTS 闭包升级到 2.9.0
  • Rslib 升级到 1.0.0-rc.2,使用 TypeScript 7 原生声明生成链路。
  • Rstest、Rsdoctor、SWC、HTML 集成与类型检查插件同步升级。
  • 移除 Rspack 2.2 已废弃且无效的 cache.maxVersions 透传。

升级收益

  • 缓存与增量构建更可靠:纳入 loader 依赖跟踪、缓存依赖 ID 持久化、重建时陈旧 issuer 清理及 Windows 恢复路径规范化,降低缓存失效或复用错误结果的风险。
  • 构建和开发服务更稳定:修复资源输出阶段的钩子顺序与并发写入控制;Rsbuild 在 watch 致命错误后不再遗留挂起请求,并会正确等待子编译器结束。
  • Module Federation 运行时开销更可控:预加载资源 URL 自动去重、同步 shared factory 支持缓存,减少重复预加载与重复实例化。
  • 联邦问题更容易定位:新增 instance-aware runtime diagnostics,可按 Federation 实例区分运行时信息,改善多实例场景的排查体验。
  • 版本兼容边界更清晰:Rspack、Rsbuild、Rslib、Rstest 与 Module Federation 使用同一代依赖组合,减少 peer 版本漂移和跨工具链兼容问题;移除无效缓存字段后也避免继续产生废弃配置噪音。
  • 升级信心更高:核心构建、Module Federation 生产构建和 31 个浏览器交互场景均已验证,升级收益不依赖仅类型或配置层面的推断。

兼容性与维护

  • 增加现代模块、Android 6 和 Chrome 60 等兼容构建与验收覆盖。
  • 加入可机器读取的核心依赖升级检测与发布安全门禁。
  • 修复并收敛多条依赖安全链路,同时保持 CDN 与 legacy lib 的独立版本线不变。

发布后仓库工具链升级:pnpm 12

状态说明:以下内容已由 PR #434 合并到 main(merge commit eb451180),但仍不属于 v4.0.1 Tag 或已发布的 npm 4.0.1 包内容。

升级内容

  • 仓库 package manager 基线由 pnpm@10.34.5 切换为 pnpm@12.2.1engines.pnpm 同步为 12.x
  • CI、Publish workflow、release guard、核心依赖扫描、CLI doctor、项目生成模板、真实验收命令和文档统一使用 pnpm 12。
  • ignoredBuiltDependencies 迁移为 pnpm 12 的显式 allowBuilds: false,保持原有 9 个依赖安装脚本不执行的安全边界。
  • 保留 pnpm 12 默认的 24 小时依赖发布时间保护,仅对已验收并锁定的 @rstest/browser@0.11.11@rstest/core@0.11.11 使用精确版本豁免,未来版本仍受保护。
  • 使用 pmOnFail: ignore 保持 pnpm-lock.yaml 为单文档,避免 GitHub dependency graph 和单文档安全扫描器误读环境锁文件、丢失真实 workspace 依赖图。
  • pnpm-lock.yaml 依赖图保持不变;pnpm 12 冻结安装前后锁文件哈希一致。

pnpm 12 升级收益

  • 供应链保护更严格:默认阻止发布时间不足 24 小时的依赖,并对未明确审核的依赖构建脚本直接失败。
  • 依赖脚本权限更透明:每个允许或拒绝执行安装脚本的包都有显式配置,避免依赖脚本被静默执行或忽略。
  • 本地、CI、发布和新项目完全对齐:开发者、GitHub Actions、正式发布流程、emp doctoremp create 使用同一 pnpm 主版本及固定版本,减少环境漂移。
  • 安全扫描持续有效:锁文件保持单文档,GitHub 依赖图和现有 YAML 工具仍能读取完整依赖闭包,不会出现依赖数被误判为 0 的盲区。
  • 迁移不扰动依赖闭包:本轮没有重新选择或升级 workspace 依赖,降低 package manager 大版本迁移与生态依赖升级同时发生时的排错成本。

pnpm 12 验证结果

  • corepack pnpm install --frozen-lockfile 通过,供应链策略检查通过,锁文件哈希保持不变。
  • test:rules:6 个测试文件、51/51 通过。
  • deps:core:check:14/14 为 CURRENT
  • ci:verifyempbuild、17 包发布 dry-run 全部通过。
  • 应用验收:14/14 个真实应用构建通过,library output smoke 通过。
  • PR #434 CI:Node.js 20 / 22 / 24、build、apps 共 5/5 通过。
  • 独立只读复核通过,未发现任务外改动、生成物或锁文件漂移。

v4.0.1 验证结果

  • 本地 ci:verifyempbuild、17 包 npm dry-run 全部通过。
  • 浏览器验收:22 个测试文件、31 个真实交互场景全部通过。
  • PR CI:Node.js 20 / 22 / 24、build、apps 共 5 项全部通过。
  • GitHub Actions 云端 dry-run 与正式 Publish workflow 均成功。
  • npm 回读确认 17/17 包的 versionlatest 均为 4.0.1

相关变更