React native monorepo with PNPM

toe95027  于 2023-08-07  发布在  React
关注(0)|答案(3)|浏览(172)

我的目标

我正在尝试使用React native monorepo和PNPM,因为我需要pnpm的性能。

预期

我应该能够将React原生应用程序与pnpm android捆绑在一起,并使用pnpm start启动开发服务器。

实际结果

我可以捆绑应用程序,但 * 我不能启动地铁服务器 *。我总是得到这个错误:x1c 0d1x的数据

更多信息

我有node v16.14.2,react native v0.69。
我知道默认的metro bundler不支持pnpm使用的符号链接(https://github.com/pnpm/pnpm/issues/1252#issuecomment-667600769),所以我尝试在metro.config.js中修补metro:

这在纯React原生repo中工作得很好,就像这里例如:https://github.com/gjhughes/react-native-pnpm-example

我的项目结构看起来像这样:

project
└───shared
└───backend
│   │   package.json
│   
└───frontend
│   │   package.json
│   
└───mobile-app
│   │   package.json

字符串
以下是我的pnpm-workspace.yaml



我绝望了。这可能吗
如果你还有什么问题,尽管问!

u3r8eeie

u3r8eeie1#

使用不带符号链接的pnpm。在monorepo的根目录下创建一个.npmrc,设置如下:

node-linker=hoisted

字符串
删除node_modules并运行pnpm install。相关文档:https://pnpm.io/npmrc#node-linker

iaqfqrcu

iaqfqrcu2#

你好,我做了一个与monorepos工作的样板文件,以防你需要它
使用react-native 0.72.1在一个monorepo上,比如喜欢它的turbo;)
https://github.com/Morraycage/turbo-react-native-boilerplate

hrirmatl

hrirmatl3#

.npmrc中,您可以执行以下操作:
看看是否有任何问题与符号链接,使任何工作,你可以开始

node-linker=hoisted

字符串
但这将完全破坏拥有pnpm的意义
对我来说,这些线做的工作,并准备在必要时延长

public-hoist-pattern[]=*eslint*
public-hoist-pattern[]=*prettier*
public-hoist-pattern[]=*react-native*
public-hoist-pattern[]=*metro*


(note默认情况下重用的eslintprettier
更多详情请参见https://pnpm.io/npmrc#hoist-pattern

相关问题