Roma - Facebook工具链大一统

什么是roma

roma,中文名罗马,是Facebook的rn团队的产出,是一个试验性质的javascript工具链,集编译,linter,格式化,打包,测试等等于一体。目标是成为一个处理javascript源代码的全面性工具。javascript

roma不是一个收集已有工具的整合体,全部的内部组件都是有业务逐渐提炼出来的,而且没有使用三方库。java

roma虽然是试验性工具,可是目前正在积极地发展。目前对全部感兴趣的将来贡献者们敞开大门。由于roma尚未作好在生产环境使用的准备,因此使用roma的惟一方式是从源代码构建。git

roma是有志向的工具链,它或许将替代不少已存在的javascript工具。固然,咱们未来也会提供能够在其余工具中使用的组件。好比将roma做为插件集成在其余打包器中。github

roma遵循MIT协议,而且基于Contributor Covenant Code of Conduct管理。typescript

roma的诞生

Sebastian McKenzie启动的roma项目,他同时也是babel和yarn的做者。shell

roma是Facebook的rn团队协力完成的项目。json

roma的名字灵感来自于条条大路通罗马罗马非一日可就在罗马的时候就要融入到罗马的生活中。这些指代咱们对roma的指望,但愿整个项目中有广阔的适应范围和咱们对约定(一致性)的渴望。然而。roma这个雄心勃勃的项目起初来自于办公室的一句玩笑话。 : )babel

roma有一个斯巴达头盔样式的logo,虽然可能与roma没有强相关性,可是它比Galea要帅得多。工具

代码库

roma几乎彻底使用typescript编写,几乎没有松散类型。测试

roma采用monorepo规范结构。

roma彻底自托管,每次更新会使用以前的版本编译新的代码。

roma支持JSX和Flow、Typescript特有的注释代码。

查看更多细节

当前集中点

当前咱们主要致力于linting部分,参考issue

快速上手

若是想要在项目中集成roma,你所要作的只有一个配置文件:roma.json

$ mkdir hello-world
$ cd hello-world
$ echo '{}' >rome.json

该文件用来配置roma,而且也是划分是否受roma托管的重要标志。

更新细节请查看官网

roma的哲学

下面的列表列出了roma信守的精神。这些内容是不全面的,其中一些是浅显易懂可是为了完成性依然将其列出。

工程管理

  • 设定明确的目标:提早制定工程的意图和指望,咱们的工程不该该给咱们惊喜!
  • 公开性:有关roma的讨论和决定都将在一些公共场景,如github、roma dicord和推特。惟一例外的是对于代码的审核咱们将严格保密。

技术

  • 无外部依赖:咱们能够经过更机密的集成咱们的内部工具和互通抽象概念,使咱们更告诉的推进项目的进度和更加一致性的体验。利用定制型咱们有更多的机会去得到更好的体验。
  • 对错误提供修复提示:经过对常见使用方法的推断和过滤,咱们要减小无关的、没有帮助的提示信息。
  • 更精确到错误信息:咱们没有通用的错误信息,由于这不能帮助使用者明白为何会出错,也不能帮助开发者更好的经过错误信息定位问题所在。
  • 简化API:对于可选配置和命令行参数,咱们以为不是必须的。他们并不能很好的组合使用。咱们为何不能简化这部分?
  • 避免专用术语:这些专用术语除了装X几乎没有其余做用,咱们致力于让新手和专家都能一目了然,例如,在编译出错的时候,使用'character'代替'token'!
  • 对于命令和命令行参数避免缩写:没有必要时用使人迷惑且不得不查阅文档的缩写!
  • 容错率高的术语:使用那些更容易明白的术语
  • 兼容大部分终端:不要假设仅仅在terminal中使用,要兼容更多的通用环境。
  • 使用强类型:不要使用松散类型,尽量的验证输入。
  • 终端上的输出更明确:设计终端输出的时候,不要仅仅依靠色彩来提升可读性,应合理运用格式、符号、间距来提升可读性。

社区

贡献和开发介绍在这里

能够来这里这里一块儿讨论,可是要遵照咱们的准则哦!

相关文章
相关标签/搜索