具有世博会和多个入口点的Monorepo

时间:2018-04-09 17:17:05

标签: javascript reactjs react-native expo monorepo

我有两个分享大部分代码并已投入生产的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-nativeexpo依赖项,exp也需要这些依赖项来启动React Native packager,这会导致某些构建时的问题。我们尝试了以下方法:

  • mobile-commonexporeact-native添加到mobile-{1,2}/package.json中的依赖项并执行lerna bootstrap。这允许我们运行打包程序,但移动应用程序在构建时崩溃,因为它们发现重复的依赖项。
  • 我们也从未让纱线工作空间起作用。
  • lerna bootstrap --hoist也没有用。
  • npm link在构建时也产生了重复依赖的问题。

我们真的想转向这种结构,因为我们之前的结构并不容易让我们并排运行这两个应用程序,而且它变得越来越必要。

感谢您帮助我们!

1 个答案:

答案 0 :(得分:0)

如果您想使用monorepo设置博览会,可以查看my example here

当前,expo程序包必须保留在root package.json中,这是由于watchman的限制导致无法正确解析符号链接。