Rencontrez Rome des créateurs de Babel - compilateur, constructeur, linter, tests dans une bouteille





Il y a près de deux semaines, un article de blog sur Rome est sorti .



Rome est tout un ensemble d'outils - linter, compilateur, constructeur, testeur et plus encore. Il cible JS, TS, HTML, JSON, Markdown, CSS. Le projet tente d'unifier l'ensemble des outils nécessaires au développement front-end.



Rome est monolithique et comprend tous les outils traditionnels de l'écosystème frontal. L'équipe de développement l'appelle la chaîne d'outils. Le point important est qu'il ne s'agit pas d'une tentative de fusionner un ensemble d'outils existant, mais de développer un ensemble d'outils entièrement nouveau. Tout cela devrait être dans un seul paquet et une seule base de code.



Rome est en cours de développement pour remplacer Babel, ESLint, Webpack, Prettier, Jest et autres.



Voyons où cela mènera, pour être honnête je suis satisfait d'une certaine concurrence et d'une approche «non monolithique» dans les outils de développement. Oui, pour un débutant, l'entrée n'est pas évidente, il y a trop d'outils, qui sont pour la plupart interchangeables. Peut-être que dans cette nuance, Rome abaissera légèrement le seuil d'entrée.



État actuel







Rome est en version bêta et assume déjà certaines de ses responsabilités. Par exemple, le linter prend déjà en charge 100 règles, y compris celles couramment utilisées lors de l'utilisation de Typescript et React. Une liste complète des règles peut être trouvée ici.L'open



source du projet a débuté au début de l'année et le projet compte déjà 70 contributeurs et plus de 600 commits. En général, le projet se développe et jusqu'à présent aucune atténuation n'est visible.



Un peu d'histoire



En 2014, 6to5 (maintenant appelé Babel) a été créé. Il s'agit d'un transpilateur JavaScript qui a compilé le nouveau code ES6 dans ES5. À cette époque, le projet ne fixait aucun objectif, mais avec la croissance de la popularité, le développement a dû être ajusté.



6to5 a été renommé Babel et le nouvel objectif était de devenir un cadre commun pour les transformations statiques JavaScript. Cela signifiait un système de plugins et le support de nouvelles fonctionnalités pour les futures normes JavaScript et même des «propositions».



L'équipe de développement a pensé aller encore plus loin. Babel devrait être sous le capot des minificateurs, des linters, des formateurs, de la coloration syntaxique, des vérificateurs de type, des outils de compilation, etc.



En 2016, le créateur de Babel a quitté le projet. Au fil du temps, il est devenu clair que l'approche consistant à fournir une API large (littéralement tous les composants internes) était trop difficile à maintenir. Pour prendre en charge la boîte à outils ci-dessus, littéralement tout devrait être réécrit. L'architecture du projet est liée aux décisions que l'auteur a prises en 2014, en étudiant uniquement le fonctionnement des analyseurs et des compilateurs AST. Les modifications affecteraient la plupart de l'API sans compatibilité descendante.



Les développeurs d'outils JavaScript passent énormément de temps à traiter le code source. Babel, ESlint, Webpack, font tous partiellement la même chose.



Les linters de l'écosystème JavaScript sont comme des compilateurs. Les deux prennent le code source comme entrée, le traitent et produisent le code et les erreurs (le cas échéant). Seul le code reçu est différent. Dans le cas du linter, il s'agit d'un code source formaté avec des correctifs.



Plus votre infrastructure de compilation est solide, plus le linter est solide. La même chose s'applique aux autres outils qui traitent le code d'une manière ou d'une autre. Nous pouvons créer des outils plus puissants en utilisant un cadre commun facile à adapter.



Rome est le successeur spirituel de Babel. J'ai appris mes leçons et fixé des objectifs clairs. Au lieu de fournir une API publique trop volumineuse pour d'autres outils, nous les rassemblons tous en un seul endroit. Je suis ravi d'essayer quelque chose de nouveau que JavaScript et l'écosystème Web n'ont jamais vu auparavant.


- Sébastien McKenzie



En utilisant



Rome peut être installé en utilisant Yarn ou NPM:



yarn add rome


npm install rome


Création de projet



Pour que Rome trouve vos fichiers, il a besoin d'une configuration. Pour créer automatiquement un projet, vous pouvez utiliser:



rome init


Cette commande créera un répertoire .config et y placera rome.rjson , avec la configuration du projet.



Si vous avez un projet existant, vous pouvez appliquer automatiquement la mise en forme et les correctifs immédiatement:



rome init --apply


RJSON est une extension JSON qui ajoute certaines fonctionnalités. Par exemple, des commentaires en JSON.


Vous pouvez démarrer le linter avec



rome check


Peluchage



Rome est conçue pour fournir autant d'informations que possible pour corriger les erreurs. Le projet a une sorte de credo:



Interface utilisateur riche (résultat dans la console): informations bien formatées, coloration syntaxique, liens, listes, etc.



Corrections: Rome peut corriger de nombreux bogues (comme les linters) et les appliquer automatiquement. S'il existe plusieurs solutions, l'outil vous donne le choix.



Processus d'examen: la CLI est riche de manière interactive et vous permet de prendre des décisions sur les correctifs et de passer en revue toutes les erreurs directement dans la console.



Éditeurs: Rome s'intègre aux éditeurs, ce qui vous permet de mettre en forme pour enregistrer, mettre en évidence les erreurs, etc.



Conservation: Rome met en cache les fichiers originaux avant d'apporter des modifications. En utilisantrome récupérer , vous pouvez annuler les correctifs.







Au lieu d'une conclusion



Bien que cet outil soit encore en développement actif, il peut déjà être essayé d'une manière ou d'une autre. L'essentiel est que ça ne se passe pas comme ça:







Hors documentation



All Articles