首页 > 解决方案 > 我是否必须对带有 react-native-web 的 monorepo 中的所有软件包使用 no-hoist?

问题描述

我正在开发一个 SPA,我正在使用 Rails 和 ruby​​ webpacker 实现来提供服务。我将我的客户端文件夹拆分为一个 yarn monorepo 用于我webnative、 和common代码,这样我就可以使用 react-native-web 尽可能多地重用。

到目前为止,对于本机部分,我必须将nohoist指令用于我想要使用的任何库。当我运行 android 开发服务器时,它不能在提升的 node_modules 文件夹中捆绑任何东西,所以我想使用的任何东西我都必须告诉它安装在本地 node_modules 文件夹中,使用nohoist.

我想知道这些项目是否应该这样设置,如果这正常吗?我应该使用像 Lerna 这样的东西来管理符号链接和包提升吗?设置时我是否错过了某个步骤或某个库?

标签: react-nativeyarnpkgmonoreporeact-native-web

解决方案


我在单存储库中使用纱线工作区和 lerna,并且符号链接不适用于我们的 react-native 项目。

我在子包的 package.json(mono-repo 中的 react native 包)中添加了以下内容,以防止提升 react native 包中的任何内容:

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

我假设这类似于 react-native-web。

我们尝试了许多其他不起作用的方法,看起来提升通常与基于 React Native 的项目不兼容。


推荐阅读