【问题标题】:Share code across two apps in React Native在 React Native 中跨两个应用程序共享代码
【发布时间】:2017-03-20 20:49:31
【问题描述】:

我有两个应用程序实际上共享相同的代码库(在 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' 时出现以下错误消息:

还有其他方法可以实现我想要的吗?

【问题讨论】:

    标签: javascript node.js react-native


    【解决方案1】:

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

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

    【讨论】:

    • 如果包和主项目都依赖于 RN,是否可以让它工作?我在打包程序中遇到错误,提示两者都尝试注册相同的组件。
    【解决方案2】:

    我正在尝试解决同样的问题。

    一个可能的解决方案是在每个应用程序目录中使用指向外部 src 目录的符号链接。我还没有对此进行测试。

    【讨论】:

    • 挖得更深一点,我相信这可以通过'npm link'来实现。看看这篇文章:justjs.com/posts/…
    • 我也是这么想的,但我认为 RN Packager 不可能。请参阅我在答案中发布的讨论。
    • 你说得对,我无法完成这项工作。我遇到的问题是我取出的共享组件依赖于 RN/React,当我在原始项目中安装它时,打包程序抱怨冲突(RN 被加载两次)。在这里不知所措。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多