在我的Monorepo内部,我有一个软件包,我希望在其中的node_modules中包含所有依赖项。
但是无论我做什么,它的node_modules仍然为空。
因此,出于我的问题,我能够通过以下设置重现该问题
/
package.json
lerna.json
node_modules
packages/
A/
node_modules
package.json
index.ts
B/
node_modules
package.json
index.ts
我为此创建了一个repo!
主package.json
{
"name": "A-B-test",
"private": true,
"workspaces": {
"packages": ["packages/*"],
"nohoist": [ "**/B" ]
},
...
"devDependencies": {
"lerna": "^3.13.4"
}
}
B/package.json
看起来像{
"name": "@scaljeri/B",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"angular": "^1.7.8"
},
"devDependencies": {
"browserify": "^16.2.3",
"typescript": "^3.5.2"
}
}
现在,当我在项目的根目录中运行
yarn
时,所有依赖项都将安装在根node_modules
中。纱线版本:1.16.0
节点:12.4.0
有什么建议可能是什么问题?
最佳答案
以我的经验,有必要以以下方式双重指定每个软件包:
{
"nohoist": [
"**/B",
"**/B/**,
"**/C",
***/C/**
]
}
另外,我发现有必要在修改
node_modules
设置后删除所有现有的nohoist
文件夹。因此,如果您的项目位于packages
中,并且位于项目目录中,则可以删除所有这些node_modules
文件夹,如下所示:# delete node_modules on linux
rm -rf ./packages/*/node_modules
rm -rf ./node_modules
# install again
yarn install --check-files