We're in the process of migrating our monorepo to use Lerna.
Lerna supports both NPM and Yarn and furthermore allows configuration of use with Yarn workspaces. It's unclear to me whether Lerna with Yarn workspaces has any distinct advantages to Lerna with NPM. Many posts claim that Lerna does more or less the same thing as Yarn workspaces out of the box.
Are there any advantages to using Lerna with Yarn workspaces opposed to Lerna with NPM?
Lerna allows teams to build libraries and apps in a single repository called a monorepo. Since we don't have to publish to NPM until we're ready to go, it's faster to iterate locally when building components that depend on each other.
This array then needs to be maintained manually to reflect the monorepo topology. Because of this, Lerna still plays a significant role here. Lerna will determine which packages have build npm script defined, and then it determines the proper execution order.
But surprisingly many still haven't heard that Lerna is back, far from obsolete or deprecated and is getting brand new features. We from Nrwl are the creators of Nx and given our long history in the monorepo space, we offered to take over stewardship of Lerna when it was declared “dead” in April 2022.
Lerna is used to optimize the management of monorepos. We'll use this tool to manage shared dependencies. Yarn Workspaces is used to optimize and link different packages together.
As far as I know, NPM doesn't have any mechanism comparable to Yarn workspaces
.
Lerna + Yarn workspaces begins to shine when developing a library, as opposed to an application, however, I find that even with an application, this combination can make the local developer experience better by providing conveniences such as release management and the ability to easily define and run 'root' scripts across all or a select 'scope' of packages in the project.
After some investigation, I've found the following differences:
package-lock.json
file for each package where using Yarn only creates one in the root of the project.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