Our great sponsors
-
monorepo-vs-polyrepo
Monorepo vs. polyrepo: architecture for source code management (SCM) version control systems (VCS)
-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
Of course, you can argue that it might not always work. Not all benefits can be used. And it's true, NX works great with JavaScript frameworks only. If your backend is not Node.js based, you won't be able to use it. I invite you to learn about other language-agnostic tools here.
Okay, the answer to the first question depends on your situation and preferences. As I mentioned, I'm here to share, not sell. So, you'll need to do the homework yourself. I found a great page about the pros and cons of both approaches. If you decide to try monorepo, be my guest and suit yourself with whatever option is available. I can share an excellent website that might help you decide https://monorepo.tools/. My story of using NX is based on occasion and curiosity, but I'll tell it later.
Of course, you can argue that it might not always work. Not all benefits can be used. And it's true, NX works great with JavaScript frameworks only. If your backend is not Node.js based, you won't be able to use it. I invite you to learn about other language-agnostic tools here.
The next struggle is not a big issue anymore, but it was previously. I'm talking about low-level access to the webpack config. I think Angular started this trend, and NX developers followed it for some reason. Maybe it's their Angular roots. I don't know. It was a pain in the ass to get to the config. We had to use patch-package util to overwrite config directly inside the node_modules folder to make the change we needed. Luckily it's not the case anymore. You can provide a custom webpack config per application without needing a 3rd party package.