17611538698
webmaster@21cto.com

尤雨溪的新公司:要做 JS 工具链

资讯 0 164 2024-10-08 07:23:20
导读:Vue.js的作者尤雨溪(Evan You)正在重新构想,使用Vite作为 JavaScript 工具链。他成立了一家新公司 VoidZero 来一起创建它。

图片

开发服务器 Vite 和 JavaScript 框架 Vue.js 的作者尤雨溪(Evan Youh )周二在 X 上正式宣布,他正在创办一家新公司,致力于为 JavaScript 生态系统构建新的工具链。

好家伙,这消息不径而走了,结果一下子火遍了前端圈子和甚至整个技术圈子。

说起来,如今越来越多的前端框架建立在 Vite 上或已经迁移到 Vite,包括 Angular、Astro Qwik、Redwood、Remix、Solid 和 SvelteK等框架和库上。

尤雨溪是在 Vite 上干了多年,他觉得 JavaScript 需要更好的工具链。他在新的公司网站上的一篇博客文章中,这样写道

“虽然 Vite 极大地改善了高级开发人员的体验。但在内部,它仍然依赖于各种依赖项,并通过抽象和变通方法来消除不一致之处,” 

“在性能方面,它仍然受到跨不同工具重复解析和序列化成本的瓶颈,并且由于功能限制和可定制性有限,它无法充分利用重建等本机工具。

这个决定源于他为 Vite 量身设计一款名为 Rolldown 的新打包器的努力。在开发打包器的过程中,他意识到 Vite 面临的挑战反映了 JavaScript 生态系统的碎片化、不兼容性和低效率。

为了改变这种状况,他认为需要一个统一的工具链。

“多年来,已经出现了许多出色的工具来解决 JavaScript 应用程序日益增长的规模和复杂性,”他这样写道。“然而,这个生态系统一直却是支离破碎的:每个应用程序都依赖于无数的第三方依赖项,而配置它们以使其协同工作仍然是开发周期中最艰巨的任务之一。”

定义JavaScript工具链


首先,我们先向大伙介绍几个定义。


根据Cloudogu 词汇表,工具链通过链接多个软件应用程序/工具来自动化软件开发流程。当然,JavaScript 工具链是用于开发、构建、测试和部署 JavaScript 应用程序的工具和流程的集合。


通常,软件工具链包括并不限于如下:


  • 一个IDE;

  • 用于自动执行重复性任务(如编译、列出、测试和构建代码)的任务运行器;

  • 构建捆绑和优化JavaScript代码以供生产使用的工具;

  • 数据包管理器用于处理依赖项和库。

  • 衬套,用于分析代码中的问题、包括测试和调试人员。


一些流行的工具链的例子包括Angular CLI、Webpack、Parcel、Rollup和Create React App,后面是一个使用预配置工具设置 React 项目的工具。

工具链的愿景


尤雨溪提道,计划从以下几个技术层面统一前端开发工具链。


  1. 这些工具应该使用相同的抽象语法树(AST),这将让工具共享信息并避免冗余的解析器。

  2. 此外,工具还应具有统一的模块互操作性。模块互操作性描述了不同模块如何相互交互,而统一的模块介绍系统可确保工具能够与来自不同来源和格式的模块协同工作。


他补充说的第三点是,这些工具也应该具有相同的解析器。

我们来说这个解析器,它负责确定 JavaScript 项目中模块、函数和变量的位置。举一个例子是Node.js中用于加载模块的必需函数。而让这三个因素在工具之间共享将消除不一致并减少冗余解析成本。

该工具链必须是高性能的,这表示它们将“用一种编译为本机语言编写的,这种语言专为实现最大并行化和低开销 JS 插件支持而设计,性能将解锁了更多有价值的功能,不仅可以改善开发人员的体验,还可以改善最终用户的体验。”

工具链的每个组件也可以独立使用,这些工具可以提供用于高级定制的基础模块。

最后,工具链应该与运行时无关,以便让开发人员在所有环境中都能获得相同的体验。

“这样的工具链不仅会增强 Vite,还会推动整个 JavaScript 生态系统的重大改进。这是一个有雄心的愿景,实现它需要一支全职、敬业的团队——在我过去项目的独立可持续发展模式下,这是不可能的。”

当然,尤雨溪也意识到创建统一的工具链存在实际的挑战。

下一步,这家名为VoidZero, Inc. 的公司将为人们提供一种开发该工具链的方法。

目前该公司已经筹集了 460 万美元的种子资金,约3200万人民币,由全球风险投资公司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 开发和生产中的统一打包工具。


Rolldown 是基于 Oxc 而不是SWC (源到源编译器)构建的,这使得它比esbuild和所有其他 Rust 打包器都快。


由 Rolldown 驱动的 Vite alpha 版本计划于今年晚些时候发布。


“人们需要一个速度极快、非常适合应用程序打包,并与 Vite 的插件生态系统完全兼容的打包器,在 Oxc 之上构建 Rolldown 还可以在打包阶段并行执行更多与 AST 相关的任务,例如,使用isolatedDeclarations: true 发出和打包。”


Vite 和 Vitest 的团队治理将保持不变,VoidZero 将雇用或赞助 Vite 和 Vitest 的多个核心贡献者。


让我们期待与祝福尤雨溪创造第二个成功!

作者:场长

评论