Conheça Roma dos criadores de Babel - compilador, construtor, linter, testes em uma garrafa





Quase duas semanas atrás, foi publicado um post de blog sobre Roma.



Rome é um conjunto completo de ferramentas - linter, compilador, construtor, executor de teste e muito mais. Destina-se a JS, TS, HTML, JSON, Markdown, CSS. O projeto está tentando unificar o conjunto de ferramentas necessárias para o desenvolvimento front-end.



Roma é monolítica e inclui todas as ferramentas tradicionais do ecossistema de front-end. A equipe de desenvolvimento o chama de conjunto de ferramentas. O importante é que esta não é uma tentativa de mesclar um conjunto de ferramentas existente, mas de desenvolver um conjunto inteiramente novo de ferramentas. Tudo isso deve estar em um pacote e uma única base de código.



Rome está sendo desenvolvido como uma substituição para Babel, ESLint, Webpack, Prettier, Jest e outros.



Vamos ver aonde isso vai levar. Para ser honesto, estou satisfeito com alguma concorrência e uma abordagem "não monolítica" nas ferramentas de desenvolvimento. Sim, para um iniciante, a entrada não é óbvia, existem muitas ferramentas, que na sua maioria são intercambiáveis. Talvez nesta nuance, Roma abaixe ligeiramente o limiar de entrada.



Estado atual







Roma está em fase beta e já está cumprindo algumas de suas responsabilidades. Por exemplo, o linter já oferece suporte a 100 regras, incluindo aquelas comumente usadas ao usar Typescript e React. A lista completa das regras pode ser encontrada aqui.O



open source do projeto começou no início do ano e o projeto já conta com 70 colaboradores e mais de 600 commits. Em geral, o projeto está em desenvolvimento e até o momento nenhuma atenuação é visível.



Um pouco de historia



Em 2014, foi criado o 6to5 (agora denominado Babel). Este é um transpiler JavaScript que compilou novo código ES6 no ES5. Naquela época, o projeto não tinha metas, mas com o crescimento da popularidade, o desenvolvimento teve que ser ajustado.



6to5 foi renomeado para Babel e o novo objetivo era se tornar uma estrutura comum para transformações estáticas de JavaScript. Isso significava um sistema de plugins e suporte para novos recursos para padrões JavaScript futuros e até mesmo "propostas".



A equipe de desenvolvimento pensou em ir ainda mais longe. O Babel deve estar sob o capô de minificadores, linters, formatadores, realce de sintaxe, verificadores de tipo, ferramentas de compilação e assim por diante.



Em 2016, o criador do Babel deixou o projeto. Com o tempo, ficou claro que a abordagem de fornecer uma API ampla (literalmente, todas as partes internas) era muito difícil de manter. Para dar suporte ao kit de ferramentas acima, literalmente tudo teria que ser reescrito. A arquitetura do projeto está relacionada às decisões que o autor tomou em 2014, estudando apenas como funcionam os analisadores e compiladores AST. As mudanças afetariam a maior parte da API sem compatibilidade com versões anteriores.



Os desenvolvedores de ferramentas JavaScript gastam muito tempo processando o código-fonte. Babel, ESlint, Webpack, estão parcialmente fazendo a mesma coisa.



Linters no ecossistema JavaScript são como compiladores. Ambos recebem o código-fonte como entrada, processam e geram o código e os erros (se houver). Apenas o código recebido é diferente. No caso do linter, este é o código-fonte formatado com patches.



Quanto mais forte for a infraestrutura de compilação, mais forte será o linter. O mesmo se aplica a outras ferramentas que processam código de uma forma ou de outra. Podemos construir ferramentas mais poderosas usando uma estrutura comum e fácil de se adaptar.



Roma é a sucessora espiritual de Babel. Aprendi minhas lições e estabeleci objetivos claros. Em vez de fornecer uma API pública excessivamente volumosa para outras ferramentas, reunimos todas em um só lugar. Estou entusiasmado em experimentar algo novo que o JavaScript e o ecossistema da web nunca viram antes.


- Sebastian McKenzie



Usando



Rome pode ser instalado usando Yarn ou NPM:



yarn add rome


npm install rome


Criação de projeto



Para que o Rome encontre seus arquivos, ele precisa de uma configuração. Para criar um projeto automaticamente, você pode usar:



rome init


Este comando criará um diretório .config e colocará rome.rjson nele , com a configuração do projeto.



Se você já tem um projeto, pode aplicar formatação e correções automaticamente:



rome init --apply


RJSON é uma extensão JSON que adiciona alguns recursos. Por exemplo, comentários em JSON.


Você pode iniciar o linter com



rome check


Fiapos



Roma foi projetada para fornecer o máximo de informações possível para corrigir erros. O projeto tem uma espécie de credo:



Rich UI (resultado no console): informações bem formatadas, destaque de sintaxe, links, listas e muito mais.



Correções: Rome pode corrigir muitos bugs (como linters) e aplicá-los automaticamente. Se houver várias soluções, a ferramenta oferece uma escolha.



Processo de revisão: a CLI é interativamente rica e permite que você tome decisões sobre correções e repasse todos os erros diretamente no console.



Editores: Rome integra-se com editores, o que permite fazer formatação para salvar, realçar erros, etc.



Preservação: Rome armazena em cache os arquivos originais antes de fazer alterações. Usandorome recuperar , você pode reverter as correções.







Em vez de uma conclusão



Embora esta ferramenta ainda esteja em desenvolvimento ativo, já pode ser experimentada de alguma forma. O principal é que não sai assim:







Off documentation



All Articles