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还是很开放的。
原文链接:
领取专属 10元无门槛券
私享最新 技术干货