Rome是一个实验性的 JavaScript 工具链,由 Babel 和 Yarn 的作者 Sebastian McKenzie 以及 Facebook 的 React Native 团队创建。Rome 包括编译器、linter、格式化器、打包器和测试框架,旨在成为处理 JavaScript 源代码的综合性工具。
同其它类似项目不同,Rome 并没有将各种工具整合到工作流,而是对 JavaScript 生态系统进行了重新思考,对整个工具链采用了不依赖第三方库的大胆实现。
Rome 通过 TypeScript 编写,采用 monorepo 架构,所有代码都以内部包形式存在。Rome 完全自托管并且每次更新都是使用旧版本自编译而来。Rome 支持对 JSX、Flow 和 TypeScript 等代码的处理。
目前,Rome入门文档的内容非常少,这也是有意为之,文档只包含了关于 Rome 初始化、在 JSON 文件中定义设置以及包括运行、检查、编译和解析源代码等操作的内容。
Preact 和 Jason Miller 创建了 Rome 的概述以及可用 CLI 命令的详细说明,并将其打包输出与 Rollup 库进行了对比,还提供了一些示例及其它早期见解。
Rome 项目有一套清晰的开发指南,包括简明易懂的错误消息、尽可能小的 API 空间占用和强类型代码等。Rome 团队现在的关注点是linting,他们维护了一个非常活跃的GitHub问题列表。正如 McKenzie 所解释的:
Rome 目前的工作重心是 linter。这是将 Rome 变成最容易使用的工具链的目标里阻力最小的一个环节。
Rome 做了一次很有价值的反思:或许可以把 cruft 从当前的 JavaScript 开发和工具中移除,虽然现在还不能确定,这种做法会改变现状,还是只是为 JavaScript 工具链提供了另外一个选项。社区对此非常感兴趣,人们已经在讨论 Rome 是否会在未来支持WebAssembly。
Rome 遵循 MIT 协议,它还不能在生产环境中使用,目前只能从源码构建。对于那些对实验性工具链感兴趣并且能够遵守贡献准则和行为守则的贡献者来说,Rome 还是很开放的。
原文链接:
Facebook Introduces Rome Experimental JavaScript Toolchain
评论