3

我有两个 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 打包程序所必需的,这在构建时会导致某些问题。我们尝试了以下方法:

  • mobile-common,expo和添加到和做react-native的依赖项中 。这允许我们运行打包程序,但移动应用程序在构建时会崩溃,因为它们会发现重复的依赖项。mobile-{1,2}/package.jsonlerna bootstrap
  • 我们也从来没有让纱线工作区工作。
  • lerna bootstrap --hoist也没有工作。
  • npm link在构建时还会产生具有重复依赖项的问题。

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

感谢您帮助我们!

4

1 回答 1

1

如果你想用 monorepo 设置 expo,你可以在这里查看我的示例

目前,由于 watchman 无法正确解析符号链接的限制,expo 包必须保留在根 package.json 中。

于 2019-01-09T11:10:13.547 回答