Roma - Facebook工具链大一统

什么是roma
roma,中文名罗马,是Facebook的rn团队的产出,是一个试验性质的javascript工具链,集编译,linter,格式化,打包,测试等等于一体。目标是成为一个处理javascript源代码的全面性工具。
roma不是一个收集已有工具的整合体,所有的内部组件都是有业务逐渐提炼出来的,并且没有使用三方库。
roma虽然是试验性工具,但是目前正在积极地发展。目前对所有感兴趣的未来贡献者们敞开大门。因为roma还没有做好在生产环境使用的准备,所以使用roma的唯一方式是从源代码构建。
roma是有志向的工具链,它或许将替代很多已存在的javascript工具。当然,我们将来也会提供可以在其他工具中使用的组件。比如将roma作为插件集成在其他打包器中。
roma遵循MIT协议,并且基于Contributor Covenant Code of Conduct管理。
roma的诞生
Sebastian McKenzie启动的roma项目,他同时也是babel和yarn的作者。
roma是Facebook的rn团队合力完成的项目。
roma的名字灵感来自于条条大路通罗马、罗马非一日可就和在罗马的时候就要融入到罗马的生活中。这些指代我们对roma的期望,希望整个项目中有广阔的适应范围和我们对约定(一致性)的渴望。然而。roma这个雄心勃勃的项目起初来自于办公室的一句玩笑话。 : )
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中使用,要兼容更多的通用环境。
- 使用强类型:不要使用松散类型,尽可能的验证输入。
- 终端上的输出更明确:设计终端输出的时候,不要仅仅依靠色彩来提高可读性,应合理运用格式、符号、间距来提高可读性。
社区
贡献和开发介绍在这里
Roma - Facebook工具链大一统的更多相关文章
- DevOps时代,企业数字化转型需要强大的工具链
伴随时代的飞速进步,中国的人口红利带来了互联网业务的快速发展,巨大的流量也带动了技术的不断革新,研发的模式也在不断变化.传统企业纷纷效仿互联网的做法,结合DevOps进行数字化的转型. 通常提到Dev ...
- 前端劝退预警:JavaScript 工具链不完全指南
经过这么多年的发展,JavaScript 早已经不是当年那个不太起眼的脚本语言.如今的 JavaScript 可以说是风光无限,在 Web 前端.移动端.服务端甚至物联网设备上都大展身手,到处都有它的 ...
- 从大厂DevOps工具链部署,看现代产品的生命周期管理
目录 1. 认识DevOps 1.1. DevOps工具链 1.2. CI 持续集成(Continuous Integration) 1.3. CD(持续交付 & 持续部署) 1.4. Agi ...
- 字节跳动 DanceCC 工具链系列之Xcode LLDB耗时监控统计方案
作者:李卓立 仲凯宁 背景介绍 在<字节跳动 DanceCC 工具链系列之Swift 调试性能的优化方案>[1]一文中,我们介绍了如何使用自定义的工具链,来针对性优化调试器的性能,解决大型 ...
- 下一代工具链「GitHub 热点速览 v.22.43」
作为一个前端工程师,你这周被下一代的前端工具链 Turbo 刷屏了吗?不只是 Turbo 这个小工具,作为一个社区生产力工具,本周思否还开源了他们的问答系统 answer,能直接用上相关的技术标签也省 ...
- X86上搭建交叉工具链,来给龙芯笔记本编译本地工具链(未完待续)
故事的背景是,我买了一台龙芯2F的笔记本来装B. 为什么说是装B呢?因为不但操作系统是Linux,而且CPU还是龙芯的. 一般人有这么酷的装备吗?简直是装B大圣啊. 这里一定要申明一点,本人不是IT技 ...
- Atitit 项目管理(5)----------后勤管理与工具链支持管理
Atitit 项目管理(5)----------后勤管理与工具链支持管理 1.1. keyword1 1.2. 15个辅助软件1 1.3. 公共模块管理(100个即可)2 1.4. 第三方类库表2 1 ...
- gcc工具链简述
工具链软件包括BINUTILS.GCC.GLIBC.GDB等. BINUTILS是二进制程序处理工具,包括链接器.汇编器等目标程序处理的工具. GCC(GNU Compiler Collection) ...
- CROSSTOOL-NG建立交叉编译工具链
CROSSTOOL-NG建立交叉编译工具链 因为考试和学习的原因我已经一段时间没有玩我的JZ2440,现在终于考完试了,我再次找出了我的JZ2440.我之前学习的时候使用的是韦东山老师提供的开发工具, ...
随机推荐
- nginx应用geoip模块,实现不同地区访问不同页面的需求(实践版)
https://www.52os.net/articles/configure-nginx-using-geoip-allow-whitelist.html 搞了几天没有搞定,这篇文章一下 ...
- RDD(八)——缓存与检查点
RDD通过persist方法或cache方法可以将前面的计算结果缓存,默认情况下 persist() 会把数据以序列化的形式缓存在 JVM 的堆空间中. 但是并不是这两个方法被调用时立即缓存,而是触发 ...
- plsql中文显示问号
1. select userenv('language') from dual 2. 复制查询的值配置系统环境变量 NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 3.配置系统环 ...
- Mybatis的generator自动生成代码
mybatis-generator有三种用法:命令行.ide插件.maven插件.本次使用maven生成 环境:IDEA,mysql8,maven (1):新建项目,本次以SpringBoot项目为例 ...
- IDEA+selenium3+火狐/谷歌驱动 JAVA初步环境搭建 笔记
0 环境 系统环境:win7 selenium驱动 谷歌浏览器以及驱动 火狐浏览器以及驱动 1 驱动地址的下载 1.1 selenium jar包 https://www.seleniumhq.org ...
- operator和if结构
1.比较运算符:>,<,==,!=,>=,<= 注意:所有比较运算符的结果都是布尔值举例: 123456789 print(100>10) print(100<10 ...
- numpy矩阵运算--矩阵乘法
1)元素对应相乘,使用 multiply 函数或 * 运算符来实现 a = np.array([2,2,2])b = np.array([3,3,3]) c1 = a*a c1 array([4, 4 ...
- 常用的mysql操作
总结一下常用的mysql操作,避免下次遇到类似情况重复地去百度. 方法不是唯一的,但记录一种可行的方法就可以了. 遇到新的问题再继续补充. 1.增加一个列 ALTER TABLE 表名 ADD COL ...
- 解决Navicat无法连接到MySQL的问题
解决Navicat无法连接到MySQL的问题 问题一:本地IP(xxx.xxx.xxx.xxx)没有访问远程数据库的权限.于是下面开启本地IP(xxx.xxx.xxx.xxx)对远程mysql数据库的 ...
- Visual Studio 2017 Professional 下载
可以进行Office 2013/2016 VSTO开发 安装平台:Win 7 SP1.Win 10. 下载: VisualStudio2017_Professional.rar