hello i'm in new in monorepos world and i'm now searching about different monorepos tools and i found two intersting tools Nx(nrwl) and lerna but i didn't understand the real differnce between these two tools so any help and thanks
A monorepo is a single git repository that holds the source code for multiple applications and libraries, along with the tooling for them.
Yarn, Apache Maven, Bit, Builder, and Bazel are the most popular alternatives and competitors to Lerna.
Lerna is a tool to manage Monorepos with Git and npm, which automatically ties together all package versions used across your repository. Assume that you have multiple typescript projects in different repositories that have common dependencies.
Although both are great tools to work with mono repo, they're quite different in their purpose.
Lerna
is focused on linking multiple packages from the same project and managing npm publishing, and that's about it.
Nx
is more focused on managing development workflow for multiple packages. It means it can scaffold packages, and for every package, you can define configurations on how to run and build them, in a similar manner to Webpack.
Nx
can also work to spawn multiple processes at once. For example: run frontend and backend at the same time, without the need to open two different terminals. Similar to docker-compose.
Lerna
fits better for open source projects with multiple packages (because you can easily publish your packages).
Nx
fits better for handling complex workflows with multiple packages.
Nx
might be a better fit.Lerna
is definitely the way to go.Nx
, and manage the publishing manually. Or, maybe, use Lerna
and configure the workflow manually with Webpack.Someone can wonder if you could choose both, but I don't think they can work well together. At the time I'm writing this, Nx
doesn't seem to care about being compatible with Lerna
, and it Nx
still lacks support for easy publishing.
NPM
- Node Package Manager).Lerna
uses the name "project" as the wrapper folder of all your packages. Usually, a git repository is a "Lerna project" with several "Lerna packages".Nx
uses the name "project" to designate what Lerna calls "packages", and uses the name "workspace" to designate what Lerna calls "project" (i.e., the wrapper folder which holds all the projects).If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With