在React Native中的两个应用程序共享代码
我有两个应用程序实际上共享相同的代码库(在src文件夹内),除了一些配置。当前文件夹结构看起来像这样:在React Native中的两个应用程序共享代码
├── 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.js
和index.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
不幸的是,需要调用不具有这种结构正确解析路径。 当我使用import MainView from '../src/MainView'
出现以下错误信息:
是否有另一种方式来实现我想要什么?
我试图解决同样的问题。
一个可能的解决方案是将每个应用程序目录中的符号链接用于外部src目录。我还没有测试过。
关于this use case here已经有很多讨论。如果你想用watchman
来运行打包程序,我不相信这是可能的。即使有最新版本的RN,人们仍然在报告问题。
根据您的使用情况,我的一个选项是为我们的应用程序之间的共享文件创建一个单独的npm repo,并将它作为依赖项添加到两者中(更改代码不会中断应用程序已经使用它)。从整个版本角度来看,它也有所帮助。这可能是一个私人的GitHub回购(我们使用的),因为您可以使用GH repos for dependencies。
如果包和主项目都对RN有依赖关系,是否有可能使其工作?我在打包程序中遇到了关于尝试注册相同组件的错误。 – Arrkaye
挖得更深一点,我相信这可以用'npm link'来实现。看看这篇文章:http://justjs.com/posts/npm-link-developing-your-own-npm-modules-without-tears – Arrkaye
我也这么想,但我认为这不可能与RN打包。请参阅我在答案中发布的讨论。 –
你说得对,我无法得到这份工作。我所遇到的问题是我拿出的共享组件依赖于RN/React,并且当我将它安装在原始项目中时,打包者抱怨冲突(RN被加载两次)。这一次在这里输了。 – Arrkaye