With Nx abandoning custom task runners which we use extensively in Cristal (original post here), it may be time to change the monorepo tool.
I took a look at other options, but there aren’t that many:
- Lerna has been acquired by Nx’s parent company, so we may get the same problems as with Nx ;
- Turborepo is made by Vercel, which may try to force paid cloud in the future just like Nx ; plus it seems to be slower at first glance
- Moon is designed to be language-agnostic, so integration with TypeScript may be worse (didn’t test it yet) but they seem to have quite a list of nice features. Here their own comparison page against Nx and Turborepo
- Rush by Microsoft is another option but it has a few downsides like forcefully relocating packages. I had a pretty bad experience with it in a previous project both in terms of DX and performance, but it may have improved since then.
Moon seems like a compelling option ; it also integrates some tools to automatically migrate from Nx. I’m not familiar enough with how Cristal’s and XWiki’s CI work, so someone with more knowledge on the matter may want to take a look at it.
The monorepo comparison page will be updated accordingly.