Evan You 正在重新构想 Vite 将使用的 JavaScript 工具链。他成立了一家新公司 VoidZero 来帮助他创建它。
开发服务器 Vite 和 JavaScript 框架 Vue 的创建者Evan You周二在 X 上宣布,他正在创办一家新公司,致力于为 JavaScript 生态系统构建新的工具链。
越来越多的前端框架建立在 Vite 上或已迁移到 Vite,包括 Angular、Astro Qwik、Redwood、Remix、Solid 和 SvelteK。最终,他在 Vite 上的工作让他相信 JavaScript 需要更好的工具链。
"虽然 Vite 极大地改善了高级开发人员的体验,但在内部,它仍然依赖于各种依赖项,并通过抽象和变通方法来消除不一致之处," You 在新公司网站上的一篇博客文章中写道。"在性能方面,它仍然受到跨不同工具重复解析和序列化成本的瓶颈,并且由于功能限制和可定制性有限,它无法充分利用重建等本机工具。"
这个决定源于他为 Vite 量身设计一款名为 Rolldown 的新打包器的努力。在开发打包器的过程中,他意识到 Vite 面临的挑战反映了 JavaScript 生态系统的碎片化、不兼容性和低效率。为了改变这种状况,他认为需要一个统一的工具链。
"多年来,已经出现了许多出色的工具来解决 JavaScript 应用程序日益增长的规模和复杂性,"他写道。"然而,生态系统一直是支离破碎的:每个应用程序都依赖于无数的第三方依赖项,而配置它们以使其协同工作仍然是开发周期中最艰巨的任务之一。"
定义工具链
首先,介绍几个定义。根据Cloudogu 词汇表,工具链通过链接多个软件应用程序/工具来自动化软件开发流程。当然,JavaScript 工具链是用于开发、构建、测试和部署 JavaScript 应用程序的工具和流程的集合。
通常,软件工具链包括:
-
一个IDE;
-
用于自动执行重复性任务(如编译、列出、测试和构建代码)的任务运行器;
-
构建捆绑和优化JavaScript代码以供生产使用的工具;
-
数据包管理器用于处理依赖项和库。
-
衬套,用于分析代码中的问题、测试人员和调试人员。
一些流行的工具链的例子包括Angular CLI、Webpack、Parcel、Rollup和Create React App,后者是一个使用预配置工具设置 React 项目的工具。
你的工具链愿景
他写道,你计划从三个主要方面统一他的前端开发工具链。
-
这些工具应该使用相同的抽象语法树(AST),这将允许工具共享信息并避免冗余的解析器。
-
此外,工具还应具有统一的模块互操作性。模块互操作性描述了不同模块如何相互交互,而统一的模块介绍系统可确保工具能够与来自不同来源和格式的模块协同工作。
-
他补充说,这些工具也应该具有相同的解析器。解析器负责确定 JavaScript 项目中模块、函数和变量的位置。一个例子是Node.js中用于加载模块的必需函数。他写道,让这三个因素在工具之间共享将消除不一致并减少冗余解析成本。
该工具链也应该是高性能的,这意味着它们"用一种编译为本机语言编写的,这种语言专为实现最大并行化和低开销 JS 插件支持而设计",他写道,并补充道,"性能预算解锁了更多雄心勃勃的功能,不仅可以改善开发人员的体验,还可以改善最终用户的体验。"
工具链的每个组件也应该可以独立使用,这意味着这些工具将提供用于高级定制的基础模块。
最后,工具链应该与运行时无关,以便开发人员在所有环境中都能获得相同的体验,他写道。
"这样的工具链不仅会增强 Vite,还会推动整个 JavaScript 生态系统的重大改进,"他写道。"这是一个雄心勃勃的愿景,实现它需要一个全职、敬业的团队------在我过去项目的独立可持续发展模式下,这是不可能的。"
You 意识到创建统一的工具链存在实际挑战。这家名为VoidZero, Inc. 的公司将为他提供一种开发该工具链的方法。该公司已经筹集了 460 万美元的种子资金,由全球风险投资公司Accel 领投。
他写道:"统一工具链的最大挑战是从零到一的问题:它需要达到临界规模才能被指数级采用,以证明持续发展是合理的,但在真正实现这一愿景之前,跨越鸿沟是困难的。VoidZero 没有这个问题,因为 Vite 已经是 JavaScript 生态系统中增长最快的工具链。"
他写道,到目前为止,该公司已经组建了一支"在 JavaScript 工具方面拥有深厚专业知识"的团队。他们正在研究工具链的基础元素,并已交付以下内容:
-
符合规范的JavaScript 解析器 (oxc-parser),据说它比 SWC 快三倍;
-
与Node.js兼容的解析器 (oxc-resolver),据说它比 advanced-resolve 快 28 倍;
-
他补充说,TypeScript / JSX 转换器 (oxc-transform)比 SWC 快四倍;
-
他添加的linter (oxlint)比 ESLint 快 50-100 倍;
-
Vitest,一个功能齐全的 Web 应用程序测试运行器;
-
Rolldown是一款基于 Oxc 构建的打包器。You表示,它比 esbuild 和所有其他 Rust 打包器都快。
"虽然还处于早期阶段,但我们的开源项目已经被一些世界领先的工程团队使用,包括 OpenAI(ChatGPT 网络客户端)、谷歌、苹果、微软、Visa、Shopify、Cloudflare、Atlassian、Reddit、HuggingFace、Linear 等等,"他补充道。
他说,虽然现有的工具(Vite、Vitest、Rolldown 和 Oxc)将保持开源,但VoidZero将拥有版权并控制 Oxc 和 Rolldown。
由于您写道:"在我们的开源项目之上,我们将提供专门设计用于满足企业环境的规模和安全要求的端到端 JavaScript 工具解决方案",因此新的工具集似乎也可能是专有的。
这对 Vite 意味着什么
他写道,公司未来几个月的主要目标是稳定 Rolldown,然后使其成为 Vite 开发和生产中的统一打包器。 You 说,Rolldown 是基于 Oxc 而不是SWC (源到源编译器)构建的,这使得它比esbuild和所有其他 Rust 打包器都快。由 Rolldown 驱动的 Vite 的 alpha 版本计划于今年晚些时候发布。
"我们需要一个速度极快、非常适合应用程序打包并与 Vite 的插件生态系统完全兼容的打包器,"他说。"在 Oxc 之上构建 Rolldown 还可以在打包阶段并行执行更多与 AST 相关的任务,例如,使用isolatedDeclarations: true 发出和打包它。"
Vite 和 Vitest 的团队治理将保持不变,尽管您写道 VoidZero 雇用或赞助了 Vite 和 Vitest 的多个核心贡献者。