在React Native中跨两个应用程序共享代码

时间:2016-11-07 13:28:16

标签: javascript node.js react-native

我有两个实际上共享相同代码库的应用程序(在src文件夹中),除了一些配置。当前文件夹结构如下所示:

├── app1
│   ├── android
│   ├── index.android.js
│   ├── index.ios.js
│   ├── ios
│   ├── node_modules
│   ├── package.json
│   └── src
└── app2
    ├── android
    ├── index.android.js
    ├── index.ios.js
    ├── ios
    ├── node_modules
    ├── package.json
    └── src

index.android.jsindex.ios.js内部我需要src /文件夹中的模块,例如import MainView from './src/mainView';

这样我就可以在两个不同的位置保持相同的代码库,这当然不是理想的。 这就是为什么我想要一个类似于此的文件夹结构:

├── app1
│   ├── android
│   ├── index.android.js
│   ├── index.ios.js
│   ├── ios
│   ├── node_modules
│   └── package.json
├── app2
│   ├── android
│   ├── index.android.js
│   ├── index.ios.js
│   ├── ios
│   ├── node_modules
│   └── package.json
└── src

不幸的是,require调用无法正确解析此结构的路径。 当我使用import MainView from '../src/MainView'时,会出现以下错误消息:

error

还有另一种方法可以达到我的目的吗?

2 个答案:

答案 0 :(得分:0)

我正在努力解决同样的问题。

一种可能的解决方案是在每个app目录中使用符号链接到外部src目录。我还没有测试出来。

答案 1 :(得分:0)

关于this use case here的讨论很多。如果你想用watchman运行打包器,我不相信这是可能的。即使使用最新版本的RN,人们仍然会报告问题。

根据您的使用情况,一个对我有用的选项是为我们的应用程序之间的共享文件创建一个单独的npm repo,并将其作为两者的依赖项添加(更改代码不会破坏已经存在的应用程序)用它)。它也有助于整个版本控制的角度。这可能是私人GitHub仓库(我们使用的),因为您可以使用GH repos for dependencies