Introducing Rome
Unifying the frontend development toolchain

I like the story of Rome. Like the saying Rome is not built in a day, it took experiences developing several JS tools to arrive on the epiphany that things could be done in a better way.

My experiences with Babel and ESLint has mostly been positive. Things have been relatively easy with VSCode, a single click and it's installed, ready to go. Babel took a little more effort, it is a tool that does many things, and there are tons of plugins made for it. It's great that several google searches are able to point me in the right direction. However configuring the babel.config.json file is still somewhat of a learning curve, due to it's plethora of configurations and functionalities.

In my experience, what I was attempting to do is to convert the output of my Svelte project to be compatible with ES2015, which I later learnt was not something that is straightforward to do. Google searches brought up several Stackoverflow threads with several approaches to the same problem, of which an official method does not exist. One would assume something trivial like this would have been resolved long ago, but due to how JS libraries are developed, everyone is opinionated on how things should be done.

At the end, although Babel does somewhat work and produced what I wanted, I ended up using Buble (which suspiciously sounds a bit like Babel if you say it with your lips tight). What I liked about Buble, is that it's pretty much what I wanted to do, to compile my code to ES2015. And it doesn't take much to get it to work, if it is unsure of what it is supposed to do, it will ask me to define the config in the log.

And of course, you might say, I might be biased towards tools that are developed by Rich Harris. As Svelte is made by Rich, and so is Rollup which I used to compile the code, it's natural to also use Buble. This is not the case here, as my first attempt was to try out what was the most used by the community (Babel). However ease of use have won me over in the end, and ultimately the deciding factor.

My fear is that Rome would turn out to be another giant with a huge learning curve, trading ease of use for being a jack of all trades. If the team manages to pull off handling everything from linting to compiling to bundling without making it too complicated to use, then kudos to them. For now, I am happy with the patchwork that I have, which works delightfully.