【发布时间】:2021-05-05 03:08:44
【问题描述】:
我正在尝试在我的项目中实现纱线工作区 + lerna。我有一个简单的结构:
--package.json
--node_modules/
--@app/
|--client/
|--package.json
|--node_modules/
|--server/
|--package.json
|--node_modules/
|--db/
|--package.json
|--node_modules/
其中 client/ 是 React-Native 应用。我知道 react-native 中的问题,并已将我的根 /package.json 修改如下:
"workspaces": {
"packages": [
"@app/*"
],
"nohoist": [
"**/react-native",
"**/react-native/**",
]
},
据我了解,这应该会阻止 react native 本身以及任何 react-native 的依赖项被提升。但是,我正在经历的是像 react-native-linear-gradient 和 react-native-reanimated (仅存在于 client/package.json 中)这样的 react-native 库正在被提升并安装在根级别 node_modules。甚至不仅仅是本地模块被提升。 Javascript 依赖项也被提升:
- 本地基础
- react-redux
- @apollo
- 样式化组件
当然,nohoist 选项甚至不应该在这里发挥作用,因为这些模块只在 client/ 目录中使用。
那为什么要吊到根呢?
为了更好地衡量,我删除了每个工作区中的yarn.lock 文件,只保留了根级别。在运行lerna clean 和rm -rf node_modules 之后,我已经在根级别运行了yarn install。
有趣的是,此安装非常长(3-5 分钟)。仅删除根级别node_modules 甚至需要大约 20 秒。我完全不确定这对于纱线工作区+lerna 是否正常。
其他详情
纱线版本 - 1.22.10
【问题讨论】:
标签: react-native yarnpkg lerna yarn-workspaces