与Babel的创建者见面-编译器,生成器,lint,一瓶测试





大约两个星期前,有关罗马的博客文章问世



Rome是一整套工具-linter,编译器,构建器,测试运行器等。它针对JS,TS,HTML,JSON,Markdown,CSS。该项目正在尝试统一前端开发所需的工具集。



罗马是一个整体,包括所有传统的前端生态系统工具。开发团队将其称为工具链。重要的一点是,这不是要合并现有工具集,而是要开发一套全新的工具。所有这些都应该放在一个程序包和单个代码库中。



正在开发罗马,以替代Babel,ESLint,Webpack,Prettier,Jest等。



让我们看看这将导致什么,说实话,我对开发工具中的竞争和“非整体式”方法感到满意。是的,对于初学者来说,入门并不明显,工具太多了,大多数可以互换。也许在这种细微差别下,罗马将略微降低准入门槛。



当前状态







罗马处于测试阶段,并且已经在履行一些职责。例如,lint已经支持100条规则,包括使用Typescript和React时常用的规则。完整的规则列表可在此处找到



:该项目的开源始于年初,该项目已经有70个贡献者和600多个提交。总的来说,该项目正在开发中,到目前为止,没有任何衰减可见。



一点历史



2014年,创建了6to5(现称为Babel)。这是一个JavaScript编译器,将新的ES6代码编译到ES5中。当时,该项目没有设定任何目标,但是随着受欢迎程度的提高,必须对开发进行调整。



6to5被重命名为Babel,新目标是成为JavaScript静态转换的通用框架。这意味着一个插件系统,并支持未来JavaScript标准甚至提案的新功能。



开发团队认为可以走得更远。 Babel应该位于压缩程序,短绒,格式化程序,语法突出显示,类型检查器,编译工具等的范围内。



2016年,Babel的创建者离开了该项目。随着时间的流逝,很明显提供广泛的API(实际上是所有内部组件)的方法很难维护。为了支持上述工具包,实际上所有内容都必须重写。该项目的架构与作者在2014年所做的决定有关,仅研究AST解析器和编译器的工作方式。所做的更改将影响大多数API,而不会向后兼容。



JavaScript工具开发人员花费大量时间来处理源代码。 Babel,ESlint,Webpack都在部分上做同一件事。



JavaScript生态系统中的Linter就像编译器。两者都将源代码作为输入,都对其进行处理并输出代码和错误(如果有)。只有收到的代码是不同的。对于短绒,这是带有补丁的格式化源代码。



您的编译基础设施越强大,则lint越强大。这同样适用于以一种或另一种方式处理代码的其他工具。我们可以使用易于适应的通用框架来构建功能更强大的工具。



罗马是巴别塔的精神继任者。我吸取了教训并设定了明确的目标。我们没有为其他工具提供过多的公共API,而是将它们全部收集在一个地方。我很高兴尝试JavaScript和Web生态系统从未见过的新事物。


-塞巴斯蒂安·麦肯齐



使用



可以使用Yarn或NPM安装Rome:



yarn add rome


npm install rome


项目创建



为了使Rome找到您的文件,需要进行配置。要自动创建项目,可以使用:



rome init


该命令将创建一个.config目录,并在其中放置rome.rjson和项目配置。



如果您有现有项目,则可以立即自动应用格式和修复程序:



rome init --apply


RJSON是JSON扩展,添加了一些功能。例如JSON中的注释。


您可以使用以下方法启动lint



rome check


林亭



罗马旨在提供尽可能多的信息来纠正错误。该项目具有一种信条:



丰富的UI(在控制台中显示):格式正确的信息,语法突出显示,链接,列表等。



修复:罗马可以修复许多错误(例如linters)并自动应用它们。如果有多种解决方案,那么该工具将为您提供选择。



审核过程:CLI具有丰富的交互功能,使您可以对修复程序做出决定并直接在控制台中查看所有错误。



编辑器:Rome与编辑器集成,可让您进行保存的格式化,突出显示错误等。



保存:罗马在进行更改之前会缓存原始文件。使用rome restore,您可以回滚此修复程序。







而不是结论



尽管此工具仍在积极开发中,但可以通过某种方式尝试它。最主要的是它不会变成这样:







Off documentation



All Articles