我对Yarn工作区感到困惑。我遵循了本教程:,但是在一个子项目中,我仍然获得了添加到node_modules的程序包,这些程序包是从根node_modules复制的。完整的测试回购在这里:https://medium.com/trabe/monorepo-setup-with-lerna-and-yarn-workspaces-5d747d7c0e91
root package.json:
{
"name": "dnn-react-test",
"version": "1.0.0",
"description": "DNN React Component Library",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/dnnsoftware/Dnn.React.Common.git"
},
"scripts": {
},
"private": true,
"workspaces": [
"packages/*"
],
"devDependencies": {
"lerna": "2.11.0"
}
}
子项目package.json:
{
"name": "dnn-tooltip",
"version": "0.2.5",
"description": "Display an icon and associated tooltip showing a message from an array parametter",
"main": "index.js",
"scripts": {
},
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/dnnsoftware/Dnn.React.Common"
},
"dependencies": {
"lodash": "4.17.10",
"react-portal-tooltip": "2.4.0",
"dnn-global-styles": "^0.0.5"
}
}
结果:创建了包/工具提示/ node_modules / lodash。
预期:工具提示会使用根文件夹中的node_modules / lodash。
答案 0 :(得分:1)
要使lerna和yarn正常工作,需要在lerna.json中添加以下两个键值对:
"npmClient": "yarn",
"useWorkspaces": true
尽管这与您的问题没有直接关系,但我也建议您更改
"workspaces": [
"packages/*"
],
到
"workspaces": [
"packages/**"
],
使lerna在子文件夹(如/ packages / components / button)中拾取包裹。