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_配置文件解读及模板
Nginx 介绍 # nginx的最大优势在于处理静态文件和代理转发功能,支持7层负载均衡和故障隔离. 动静分离是每个网站发展到一定规模之后必然的结果.静态请求则应当最好将其拆分,并启用独立的域名,既 ...
- elasticserch-hadoop spak 网络配置异常排查
elasticserch hadoop 在本地测试写入 elasticsearch:9200时成功 线上环境却报错如下 org.elasticsearch.hadoop.EsHadoopIllegal ...
- RDD(四)——transformation_key_value类型
这里所有算子均只适用于pairRDD.pairRDD的数据类型是(k,v)形式的键值对: PartitionBy(Partitioner) 对pairRDD进行分区操作,如果原有的partioner和 ...
- Create Access Point on Archlinux
Create Access Point on Archlinux */--> Create Access Point on Archlinux 1 Solution Download creat ...
- 信贷建模little tricks
一.逻辑回归 概率分类模型 选取样本:对逻辑回归这种概率分类模型来说维持原来样本真实的分布还是有必要的,但是对一些树模型来说可以通过采样来平衡样本. 原来评分卡建模还有个拒绝推断,就是为了还原人群真实 ...
- 收集到的技术相关网址——delphi
1.DLL封装登录框架实现代码复用 https://www.cnblogs.com/wenwencao/articles/1333659.html
- 三、RabbitMQ安装
安装前准备 Linux版本信息: 发行版本:CentOS Linux release 7.5.1804 (Core) 内核版本:Linux version 3.10.0-862.el7.x86_64 ...
- LeetCode Day 9
LeetCode0017 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23&q ...
- Data Binding on Android
Data Binbing框架是在2015年Google I/O大会上最早提出来的,一直在Android开发者中热议,但是很少有真正在项目中用到.本文简单介绍Data Binding框架的简单用法以及其 ...
- id0-rsa WP合集
忙里偷闲做做题wwwwwwwwwwwww Intro to Hashing Intro to PGP Hello PGP Hello OpenSSL Intro to RSA Caesar Hello ...