首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >纱线工作区是仅存在于一个工作区中的提升模块。

纱线工作区是仅存在于一个工作区中的提升模块。
EN

Stack Overflow用户
提问于 2021-01-31 21:06:28
回答 1查看 5.1K关注 0票数 2

我正在尝试在我的项目中实现纱线工作区+ lerna。我有一个简单的结构:

代码语言:javascript
复制
--package.json
--node_modules/
--@app/
    |--client/
       |--package.json
       |--node_modules/
    |--server/
       |--package.json
       |--node_modules/
    |--db/
       |--package.json
       |--node_modules/

其中客户/是一个反应-本地应用程序。我意识到了react本机的问题,并修改了根/package.json,如下所示:

代码语言:javascript
复制
  "workspaces": {
    "packages": [
      "@app/*"
    ],
    "nohoist": [
      "**/react-native",
      "**/react-native/**",
    ]
  },

据我所知,这应该会阻止react本机本身,再加上任何react本机依赖关系的提升。然而,我所经历的是这种反应--像react-native-linear-gradientreact-native-reanimated这样的本地库(它们只存在于client/package.json中)正在被挂载并安装在根级node_modules上。挂起的不仅仅是本机模块。Javascript依赖关系也正在悬挂:

  • native-base
  • react-redux
  • @apollo
  • styled-components

当然,这里甚至不应该使用nohoist选项,因为这些模块只在client/目录中使用过。

那么,为什么要把它们吊到根部呢?

为了更好的衡量,我已经删除了我的每个工作区中的yarn.lock文件,只保留了根级别的一个。在运行lerna cleanrm -rf node_modules之后,我已经在根级运行了yarn install

有趣的是,这个安装非常长(3-5分钟)。仅仅删除根级别的node_modules甚至需要20多个小时。我一点也不确定纱线workspaces+lerna是否正常。

更多细节

纱线版本- 1.22.10

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-07 18:28:15

我正在体验的是,react本机-线性-梯度和react原生库(仅存在于client/Package.json中)之类的本机库正在被吊起并安装在根级node_modules上。

这是预期的行为,因为它们不是react-native的依赖项。您必须指定相当多的模式,如:

代码语言:javascript
复制
"nohoist": [
  "**/react-native",
  "**/react-native/**",
  "**/react-native*",
  "**/native-base",
  "**/react-redux",
  // OMG...
]

来匹配他们..。

实际上,我建议简单地添加以下内容:

代码语言:javascript
复制
"workspaces": { "nohoist": "**" } 

client/package.json文件。

这将导致client包的所有依赖项都安装在client/node_modules中--就好像它是一个独立的、没有工作区的本地项目一样。

否则,在通常添加新包(尤其是,尤其是本机模块包)时,您必须时刻保持警惕--您的nohoist模式是否反映了您添加的所有库?

此外,自动收费和吊装也有问题。

更笼统和可悲的是,我认为Yarn工作区的去重复功能被高估了。它只稍微减少了磁盘空间的使用,并且可能更简单一些,只需要nohoist所有的东西,并且只在它真正发光的情况下使用工作空间--以便于本地包链接。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65984258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档