Conoce a Roma de los creadores de Babel: compilador, constructor, linter, pruebas en una botella





Hace casi dos semanas, salió una publicación de blog sobre Roma.



Rome es un conjunto completo de herramientas: linter, compilador, constructor, ejecutor de pruebas y más. Se dirige a JS, TS, HTML, JSON, Markdown, CSS. El proyecto está tratando de unificar el conjunto de herramientas necesarias para el desarrollo front-end.



Roma es monolítica e incluye todas las herramientas tradicionales del ecosistema front-end. El equipo de desarrollo lo llama la cadena de herramientas. El punto importante es que este no es un intento de fusionar un conjunto de herramientas existente, sino de desarrollar un conjunto de herramientas completamente nuevo. Todo esto debería estar en un paquete y una única base de código.



Rome se está desarrollando como reemplazo de Babel, ESLint, Webpack, Prettier, Jest y otros.



Veamos a dónde llevará esto, para ser honesto, estoy satisfecho con algo de competencia y un enfoque "no monolítico" en las herramientas de desarrollo. Sí, para un principiante, la entrada no es obvia, hay demasiadas herramientas, que en su mayoría son intercambiables. Quizás en este matiz, Roma rebajará ligeramente el umbral de entrada.



Estado actual







Roma está en fase beta y ya está cumpliendo con algunas de sus responsabilidades. Por ejemplo, el linter ya admite 100 reglas, incluidas las que se usan comúnmente cuando se usa Typecript y React. Puede encontrar una lista completa de las reglas aquí El



código abierto del proyecto comenzó a principios de año y el proyecto ya cuenta con 70 colaboradores y más de 600 confirmaciones. En general, el proyecto se está desarrollando y hasta el momento no se aprecia ninguna atenuación.



Un poco de historia



En 2014, se creó 6to5 (ahora llamado Babel). Este es un transpilador de JavaScript que compiló el nuevo código ES6 en ES5. En ese momento, el proyecto no se fijó ningún objetivo, pero con la creciente popularidad, el desarrollo tuvo que ajustarse.



6to5 pasó a llamarse Babel y el nuevo objetivo era convertirse en un marco común para las transformaciones estáticas de JavaScript. Esto significó un sistema de complementos y soporte para nuevas funciones para futuros estándares de JavaScript e incluso "propuestas".



El equipo de desarrollo pensó en ir aún más lejos. Babel debería estar bajo el capó de minificadores, linters, formateadores, resaltado de sintaxis, verificadores de tipo, herramientas de compilación, etc.



En 2016, el creador de Babel abandonó el proyecto. Con el tiempo, quedó claro que el enfoque de proporcionar una API amplia (literalmente, todos los aspectos internos) era demasiado difícil de mantener. Para admitir el conjunto de herramientas anterior, literalmente todo tendría que ser reescrito. La arquitectura del proyecto está relacionada con las decisiones que tomó el autor allá por 2014, solo estudiando cómo funcionan los analizadores y compiladores AST. Los cambios afectarían a la mayor parte de la API sin compatibilidad con versiones anteriores.



Los desarrolladores de herramientas JavaScript dedican una enorme cantidad de tiempo a procesar el código fuente. Babel, ESlint, Webpack, todos están haciendo parcialmente lo mismo.



Los linters en el ecosistema de JavaScript son como compiladores. Ambos toman el código fuente como entrada, lo procesan y generan el código y los errores (si los hay). Solo el código recibido es diferente. En el caso del linter, este es un código fuente formateado con parches.



Cuanto más sólida sea su infraestructura de compilación, más fuerte será el linter. Lo mismo se aplica a otras herramientas que procesan código de una forma u otra. Podemos construir herramientas más poderosas usando un marco común que es fácil de adaptar.



Roma es la sucesora espiritual de Babel. Aprendí mis lecciones y establecí metas claras. En lugar de proporcionar una API pública demasiado voluminosa para otras herramientas, las recopilamos todas en un solo lugar. Estoy encantado de probar algo nuevo que JavaScript y el ecosistema web nunca antes habían visto.


- Sebastian McKenzie



Utilizando



Rome se puede instalar usando Yarn o NPM:



yarn add rome


npm install rome


Creación de proyectos



Para que Rome encuentre sus archivos, necesita una configuración. Para crear un proyecto automáticamente, puede utilizar:



rome init


Este comando creará un directorio .config y colocará rome.rjson allí , con la configuración del proyecto.



Si tiene un proyecto existente, puede aplicar automáticamente el formato y las correcciones de inmediato:



rome init --apply


RJSON es una extensión JSON que agrega algunas características. Por ejemplo, comentarios en JSON.


Puede iniciar el linter con



rome check


Linting



Rome está diseñado para proporcionar la mayor cantidad de información posible para corregir errores. El proyecto tiene una especie de credo:



Interfaz de usuario enriquecida (resultado en la consola): información bien formateada, resaltado de sintaxis, enlaces, listas y más.



Correcciones: Rome puede corregir muchos errores (como linters) y aplicarlos automáticamente. Si hay varias soluciones, la herramienta le ofrece una opción.



Proceso de revisión: la CLI es interactivamente rica y le permite tomar decisiones sobre las correcciones y repasar todos los errores directamente en la consola.



Editores: Rome se integra con los editores, lo que le permite formatear para guardar, resaltar errores, etc.



Preservación: Rome almacena en caché los archivos originales antes de realizar cambios. Utilizandorome recovery , puede revertir las correcciones.







En lugar de una conclusión



Si bien esta herramienta todavía está en desarrollo activo, ya se puede probar de alguna manera. Lo principal es que no resulta así:







Documentación desactivada



All Articles