问题
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?
回答1:
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.
回答2:
After some investigation, I've found the following differences:
- Using NPM results in a
package-lock.json
file for each package where using Yarn only creates one in the root of the project. - Yarn workspaces seems to have better support for resolving possible conflicts in the dependency tree (given that dependencies are declared in the module where they are used, see this issue)
来源:https://stackoverflow.com/questions/52181762/are-there-any-advantages-to-using-lerna-with-yarn-workspaces