基于npm和module-federation的远程包管理器

214 阅读3分钟

基于npm和module-federation的远程包管理器

最近做了一个微前端开源项目(web package manager), 临近休假先简单的推广一下, 节后再继续更新, 欢迎大家体验star, 也欢迎沟通讨论, 感谢.

WPM介绍

web package manager是基于module-federation(mf)和npm实现的远程包管理器, 打通了目前已有的umd规范与mf模块可以更简单无需顾忌的共享远程模块, 可以方便的接入现存的npm包或使用npm私有源及其他源搭建新的远程模块体系。 并且内置可自行扩展的调试插件系统, 可以一键切换远程/本地模块、集成热更新等来大大提高开发和调试效率。

特性

  • 多模块规范(集成了system、umd、module-federation等模块规范)
  • 调试模式/热更新(集成了调试面板与热更新, 可以自动连接本地启动的dev-server)
  • 版本化管理(可以使用私有或公共npm作为远程模块存储源, 也可以自定义url拼接规则自行存储远程模块)
  • 远程锁(支持动态配置远程模块的版本)
  • 性能优化(插件自动化优化多个远程模块及其chunk的加载链路, 避免多次加载的等待)

提效价值

我在自己的工作中已经使用了两年wpm, 最近才花时间将其解耦出来。简单的说它的价值在于极大的提高开发、构建效率以及版本化、灰度策略等管理等。

16953802036002.jpg 16953803131923.jpg

技术优势

底层技术使用npm + module-federation比较符合现有的技术生态 接入成本最低。 这个以后细说, 现在只简单的引入一下, module-federation作为目前基础能力最全(ts、ssr、各打包工具插件)且最活跃的远程模块共享与加载能力, 通过打包工具的编译, 能够自动分析下一个模块的加载应该并行提前发起多少个js资源(chunk)的请求来做到移除加载瀑布, 这也会带来手动编码运行时引入远程模块所做不到的性能提升。

可以独立使用的底层能力

在做wpm时我也做了许多其他的库, 用来解决一些问题

近期计划

目前开源版本暴露的能力大概占比60%, 休假结束后我会继续更新

  1. 文档、示例、开发规范、贡献指南补充
  2. wpm插件补充
  3. 内置热更新集成
  4. 文章(wpm介绍、module-federation特性及性能分析)