ReScript 12.0 发布,提供了新的构建系统

作者:Daniel Curtis
  • 2026-01-05
    北京
  • 本文字数:1569 字

    阅读完需:约 5 分钟

ReScript是一门强类型并可编译为 JavaScript 的语言,最近发布了 ReScript 12.0 版本,完成了为期多年的开发路线图,对编译器工具链进行了现代化改造,并通过改进的语法和性能提供了更佳的开发者体验。

 

ReScript 12.0 引入了多项重要特性,包括完全重写的构建系统改进的运算符、支持模式匹配的字典字面量嵌套记录类型JSX保留模式以及正则表达式字面量。此次发布还带来了模块化的运行时架构和平台专用二进制文件,显著减小了安装体积。

 

ReScript 12 的亮点特性之一是新的构建系统,该系统已于去年11月提前推出,具备智能依赖追踪和更快的增量构建能力。新系统现在能更精确地追踪依赖关系,避免不必要的重新编译,并且即使在 monorepo 包之间也能与增量工作流集成。这解决了随着项目规模扩大和 monorepo 日益普及而暴露出来的旧构建系统的局限性,此前的构建系统主要适用于单包项目。

 

对于仍需使用旧版“legacy”构建系统的项目,可通过rescript-legacy命令执行buildbuild -wclean操作。预计该命令将在 v13 中移除。

 

ReScript 12 最终完成了去年早些时候引入的统一运算符工作。算术运算符如+-*/%**现在对intfloatbigint具有一致的行为,编译器可根据左操作数自动推断正确的具体类型。开发者现在也可使用+进行字符串拼接,不再需要过去用于浮点运算的+.-.*./.等遗留运算符。

 

ReScript 12 还支持编译为普通 JavaScript 对象的字典字面量,相比Dict.fromArray大幅减少了样板代码。模式匹配也支持字典,可简洁地解构 JSON 载荷和配置对象:

let user = dict{"firstname": "John", "role": "manager"}switch user {| dict{"name": name, "role": role} => Console.log2(name, role)| _ => Console.log("missing user metadata")}
复制代码

开发者可通过"jsx": { "version": 4, "preserve": true }启用 JSX 保留模式。编译器将直接输出 JSX 语法,而非将其转换为react/jsx-runtime调用,这对ESBuildSWCBabel等打包工具非常有用,使其能够应用自己的转换逻辑。此举既保持了与 React Compiler 的兼容性,又确保输出中的 JSX 保持可读性。

 

从 ReScript 11 升级的团队应查阅迁移指南并预留过渡时间。本次发布包含若干破坏性变更,最重要的是移除了对 JSX v3 的支持、采用新的运行时包结构(以@rescript/runtime取代原有设置),以及 API 命名变更(原先以Exn结尾的函数现在改为以OrThrow结尾)。迁移工具包含一个 codemod,可自动完成机械式的重命名以简化过渡过程。

 

由于引入了平台专用包(如@rescript/darwin-arm64@rescript/linux-x64@rescript/win32-x64),安装体积可以大幅缩小。npm 现在只会安装与操作系统和架构匹配的二进制文件,从而加快安装速度,并减小 CI 流水线中的缓存占用。

 

围绕 ReScript 12 发布相关的新闻,社区讨论尚不热烈,但该语言仍持续将自身定位为 TypeScript 的替代方案,提供更强的类型保证。在 Reddit 上,有用户评论称这是个好消息,因为他曾以为该项目已经停止维护。也有用户质疑为何应选择 ReScript 而非 TypeScript,一位评论者给出了如下对比:

TS 仍然包含 JavaScript 的所有缺陷,并且其设计本质上是不健全的。ReScript 是用 OCaml 构建的,因此你可能会获得市面上最快的编译器之一,再也不用等待 5 分钟才能完成生产构建。

 

较早的对比指出,ReScript 的类型系统是健全的,能保证绝不出错;而 TypeScript 的类型系统仅仅基于推测,有时在运行时仍可能出错。ReScript 的编译速度也远快于 TypeScript,尽管 TypeScript 在生态系统采用率和 JavaScript 互操作性方面仍占优势。

 

ReScript 是一门开源的编程语言,可编译为高效且人类可读的 JavaScript。它最初源自OCaml,现已演变为拥有独立语法和工具链的独特语言。ReScript 在 React 开发中尤为流行,提供一流的 JSX 支持和极速的编译器,可轻松扩展至任意规模的代码库。

 

原文链接:

ReScript 12.0 Released with New Build System