Skip to main content

FAQ

Lerna boostrap --hoist

lerna(v3.22.1)中,当npmClientyarn时加上hoist参数时执行会报错:

--hoist is not supported with --npm-client=yarn, use yarn workspaces instead

解决办法

当使用yarn workspace,并在lerna中开启该功能时,lerna bootstrap命令由yarn install代理,等价于在workspace的根目录下执行yarn install

相关配置:

lerna.json

{
"npmClient": "yarn",
"useWorkspaces": true,
}

package.json

{
"workspaces": [
"packages/*"
],
}

这么做是因为yarn本身提供了较lerna更好的依赖分析与hoisting的功能。yarnhoisting算法

默认情况下,yarn会开启hoist功能,也可以通过设置nohoist选项手动关闭

{
"workspaces": {
"packages": [
"packages/*",
],
"nohoist": [
"**"
]
}
}

虽然yarn提供的较好的底层依赖处理的支持,但lerna提供了更高层的更方便实用的各种命令。

参考资料