在大前端世界发展到繁荣时代的今天,前端从业者们不得不面对如今纷繁复杂的模块环境带给研发和维护工作的烦恼:它安装的实在太慢了。在研发效能的大赛道上,依赖管理性能已经成了我们避无可避的绊脚石。
我们关注到蚂蚁集团的优秀同行们提出的tnpm rapid思路和探索,使用底层技术手段,解决上层业务问题,成功从文件系统层面解决前端基建问题。为前端领域的先行者们点赞👍!
我们根据这套方案还原了相对完整的FUSE版模块管理器,并且在团队日常开发中实装测试。本文将分享成果数据并且分析实践中的痛点与难点,给出我们团队的解决方案,希望能对大家有所启发。
也欢迎大家提出用底层技术”破圈“前端基建的想法和建议。
成果先行
我们使用Rust编写了FUSE守护进程和模块下载、解压的模块,使用node实现了上层命令行程序以覆盖script hook等需要npm库支持的情况,并且在团队内的osx的开发环境实装测试。
看一下基于整体思路实现的模块安装程序的性能数据
MacBook Pro (macOS Big Sur)
处理器: 2.8 GHz 四核Intel Core i7
内存: 16 GB 2133 MHz LPDDR3
测试项目: 团队内中台项目 (包含1709个模块、69450个子文件)
网络环境: < 300Mbps
可以看到在包含lock文件的情况下,安装速度有明显的提升。在含有缓存文件的情况,npm由于要处理大量的文件写入,性能表现很低下。对比而看,FUSE的优化效果非常明显,符合预期情况。由于我们的方案没有设计优化lock生成性能,依旧使用npm本身的方案,所以就先不在此列出无lock的情况的性能数据了。
综合结果数据来看,FUSE在模块管理的领域大有可为。尤为重要的是,这种把上层问题使用底层方案解决的做法是非常有突破性的,可以说拓宽了前端基建的