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.我之前学习的时候使用的是韦东山老师提供的开发工具, ...
随机推荐
- Office 365 邮件流
进入Exchange管理中心->点击左侧的“邮件流”->进入邮件流配置页面. 一.规则 规则也称传输规则,对通过组织传递的邮件,根据设定条件进行匹配,并对其进行操作.传输规则与众多电子邮件 ...
- Linux基础篇四:常用命令
. 一个点表示是 当前目录 .. 两个点表示当前目录的上一层目录 . 与 .. 相对路径的一种表现形式 cd ~/test/ ~当前用户的家目录 绝对路径 注意: ...
- git 学习系列(一)
目录 git 简介 git的升级 建立仓库 克隆仓库 查看主机名 查看仓库初始状态 将文件提交到暂存区 查看修改详情 提交修改 查看修改记录 查看个人配置信息(在 .gitconfig 文件中) 查看 ...
- VS制作dll、def文件的使用、dll加入工程使用
1.VS新建工程,在选项的时候,选择dll和空项目,保持干净的dll库: 创建完以后,添加头文件以及源文件. 2.将外部模块使用的接口导出: (1)函数导出: __declspec(dllexport ...
- [LC] 39. Combination Sum
Given a set of candidate numbers (candidates) (without duplicates) and a target number (target), fin ...
- Redis实现分布式读写锁(Java基于Lua实现)
https://blog.csdn.net/grandachn/article/details/89032815 https://blog.csdn.net/xingsilong/article/de ...
- ROC曲线、KS曲线
一.ROC曲线 ROC曲线由混淆矩阵为基础数据生成. 纵坐标:真阳性比率TPR,预测为正占真正为正的比例. 横坐标:假阳性比率FPR,预测为正占真正为负的比例. 除了roc曲线的纵横坐标外,还有一个准 ...
- 接口测试时返回的响应报json错误
问题: 测试接口时,传入错误数据,最开始对于错误数据也返回了json数据的响应:后来传入错误数据,接口突然就没有返回json数据,通过在出错的代码之前进行打印,发现接口报500了 检查错误的方法1:在 ...
- 重复测量的方差分析|Mauchly's Test of Sphericity|
生物统计学-重复测量的方差分析 之前的方差分析应用条件要求组之间是独立的,即某种因素下相同时段测量的结果数据,但4月与5月数据是有关系的,所以必须考虑某种因素下不同时段测量的结果数据,即使用重复测量的 ...
- ZOJ-1183-Scheduling Lectures
可以用贪心求最小讲课次数,贪心策略也很好想,就是对于任意主题,能早讲就早讲.这种方案的讲课次数一定是最少的,但是不满意指标不一定是最小,然后再利用动态规划求在最少讲课次数前提下的最小不满意指标. 方法 ...