The State Of Monorepos

Note: This post is a draft

Over the past few months I have been experimenting with using a single source code repository for all of my side projects (including both NPM libraries and some websites too), through this experience I have seen a ton of rough edges in the monorepo tooling space.

When I talk about monorepo tooling I am referring to build tools, package managers, script runners, and everything else in the node toolchain. For the most part, the common tools in this space are:

  • Yarn
  • Babel
  • Lerna
  • Parcel / Webpack

As well as a whole suite of standalone tools like:

Chaining all these tools together can be pretty complicated, and I wouldn't be surprised to find out that after you do set these all up you have more tools for contributing to your monorepo than actual packages or workspaces within the repo.

I've noticed that I was spending more time working on some projects like Zaps or local node scripts within my monorepo than I did work on new projects. Because of this, I've decided to instead create a template repo on GitHub and moved back to multiple separate repos.