practicajs / practica

Node.js solution starter boilerplate that is production-ready, packed with ✅ best practices and built with simplicity in mind
https://practica.dev/
MIT License
1.48k stars 136 forks source link

Which is the right Monorepo tool? #80

Open goldbergyoni opened 2 years ago

goldbergyoni commented 2 years ago

Triggering a discussion about Monorepo tools

goldbergyoni commented 2 years ago

Corresponding decision table here

joebowbeer commented 2 years ago

Corrections to table:

goldbergyoni commented 2 years ago

Hey @joebowbeer, welcome aboard 🌻

Yes, we should emphasize more that a valid monorepo strategy is a workspace + build-tool (e.g. Nx)

About Lerna - I will update, thanks. Personally, I think that Nx will swallow it but it's not fair to write that it's not maintained

mikicho commented 2 years ago

I had a good experience with Turborepo.

dionysuzx commented 2 years ago

two issues/points of confusion i have: 1) https://github.com/nrwl/nx-recipes/tree/main/pnpm-workspace this example shows that NX can be used with multiple package.json, so i don't think it's fair to argue that it can only have a root package.json (which would increase tight coupling) and 2) how is that NX is locally linking by using typescript and webpack? if you are using pnpm, for example, it is locally linking by means of pnpm workspace, and i believe it would be the same for yarn and npm as well.

thanks for this write up, i just want to make sure the information is accurate here

goldbergyoni commented 2 years ago

@d1onys1us Welcome aboard. Appreciate your feedback!

About the 1st point - Nx encourages this coupling, it doesn't enforce it. If you use the default Node plugin, this is the setup that one gets

About 2nd point - You're right. We should update the wording. Care to do this or shall I?

aledpardo commented 1 year ago

Hi @goldbergyoni, quick update on Lernajs.

The table states that Lerna doesn't support parallelism, but it does support concurrency as read here.

puneetv05 commented 1 year ago

Based on simplicity, documentation, and community support, my personal opinion leans towards Nx. This doesn't mean Turborepo isn't good; it's just a newcomer, and its community is still growing.

Nx (monorepo) + Nest (framework) = ❤️