我有两个分享大部分代码并已投入生产的Expo(React Native)应用程序。我们试图将它们移动到monorepo目录结构,如下所示:
lerna.json
package.json
packages/
mobile-1/
app.json
index.js
package.json
mobile-2/
app.json
index.js
package.json
mobile-common/
src/
... actual app code ...
index.js
package.json
我们的设置工作方式是我们导出一个从mobile-common/index.js
启动应用程序的函数,而mobile-{1,2}/index.js
应该使用特定于每个函数的初始化参数来调用此函数。
此设置的问题是mobile-common
使用react-native
和expo
依赖项,exp
也需要这些依赖项来启动React Native packager,这会导致某些构建时的问题。我们尝试了以下方法:
mobile-common
,expo
和react-native
添加到mobile-{1,2}/package.json
中的依赖项并执行lerna bootstrap
。这允许我们运行打包程序,但移动应用程序在构建时崩溃,因为它们发现重复的依赖项。lerna bootstrap --hoist
也没有用。npm link
在构建时也产生了重复依赖的问题。我们真的想转向这种结构,因为我们之前的结构并不容易让我们并排运行这两个应用程序,而且它变得越来越必要。
感谢您帮助我们!
答案 0 :(得分:0)
如果您想使用monorepo设置博览会,可以查看my example here。
当前,expo程序包必须保留在root package.json中,这是由于watchman的限制导致无法正确解析符号链接。