Vite 的现状与未来展望Vite 版本发布情况
- Vite 4.0:于2022年12月发布,主要升级了Rollup 3,并停止了对旧版Node.js的支持。此版本旨在发布一个稳定版本,充分利用生态系统的CI工具来确保与下游项目的兼容性,尽可能减少对最终用户的影响。同时,Vite采用了基于SWC的React插件。
- Vite 4.1:于2023年2月发布,主要将Rollup和esbuild的版本进行同步,并升级了React插件,修复了很多热更新(HMR)方面的问题,增加了对SWC插件的支持。
- Vite 4.2:于2023年3月发布,主要改进了source map的调试体验,与Chrome Devtools团队合作修复了一些长期存在的路径显示问题,并添加了排除文件的选项来提升调试效率。
- Vite 4.3:于2023年4月发布,主要关注性能改进,使冷启动速度比之前快4倍,热模块替换速度比以前快2倍,主要优化了对解析策略的重新编写。
- Vite 4.4:于2023年7月发布,添加了对Lightning CSS的实验性支持,这是一个使用Rust编写的快速CSS编译工具,可以加快CSS的处理速度。此外,还在create-vite中添加了Solid和Qwik模板。
- Vite 5.0:目前处于测试阶段(beta),主要变化是停止支持已经过时(EOL)的Node.js版本,并正在弃用CommonJS API,鼓励使用ESM API。
Vite 增长和采用情况
- Github Star:Vite的Github仓库累计获得了超过60k Star。
- npm下载量:Vite每周的下载量达到了720万次,相比去年增长了4倍。
- Storybook:在4月发布的7.0版本中,提供了一流的Vite支持。
- Angular:在5月发布的16版本中,使用Vite作为其开发服务器。
- Preact:在6月将其默认工具切换到了Vite。
- Redwood:在7月发布的v6版本完全基于Vite构建。
- Bun:全新的JavaScript运行时Bun自从0.7版开始支持Vite。
- VitePress:用于Vite、Rollup、Vue等众多项目文档生成的静态网站生成器,即将达到1.0版本。
- Remix:Vite团队正在与Remix团队合作,探索迁移到Vite,并已经取得了相当大的进展。
Vite 未来展望
Vite 痛点和挑战
Vite用户反馈的痛点主要包括:相对较慢的生产构建速度、开发和生产环境之间的一致性问题、开发过程中未捆绑的ESM的网络开销、令人困惑的SSR外部依赖问题、对块拆分的控制能力有限以及缺乏模块联邦支持。这些问题大多需要在打包工具层次上解决,Vite在底层使用了esbuild和Rollup两个打包工具,但两者各有优缺点,无法完全替代彼此。
Rolldown
为了解决这些问题,Vite团队正在研发Rolldown,这是使用Rust开发的Rollup替代品。Rolldown的重点将放在本地级别的性能上,同时尽可能与Rollup保持兼容。最终目标是在Vite中切换到Rolldown,并对用户产生最小的影响。
目前,Rolldown仍处于早期的开发阶段,但已经有了可以打包普通ES模块的原型。Vite团队将与Rspack团队合作开发一些共享的底层工具和功能,并计划将Rolldown开源。同时,Vite团队还将与Rollup的维护者Lukas合作,确保Rollup和Rolldown之间的API和行为一致性。
Vite 发展路线
Rolldown的发展路线分为四个阶段:
- 第一阶段:聚焦基础打包功能,目标是能够替代esbuild进行依赖预打包,处理CommonJS和伪ESM依赖项。
- 第二阶段:实现与Rollup相当的功能,尤其是与Rollup插件生态系统的兼容性,以及实现tree-shaking和高级块分割控制。
- 第三阶段:包括一些最常见需求的内置转换,如TypeScript、JSX、代码压缩,以及基于目标环境进行语法降级。目标是实现esbuild的功能,最终将用Rolldown取代esbuild和Rollup。
- 第四阶段:使用Rust重构Vite,通过Rust API公开Rolldown的插件容器,将Rolldown作为Vite引入自己的Rust核心的依赖项,从而提高性能关键路径上的效率。
最终,Rolldown的目标并不是取代现有的工具,而是更好地满足在Vite中所面临的独特需求,并最终使所有使用Vite的用户受益。