对多个应用程序使用单个expo代码库

时间:2018-08-07 02:46:49

标签: react-native expo

我收到了一个应用程序,我们为其他人加了白标签。 这意味着我们通过这些应用程序共享相同的功能,但是每个应用程序中都有一些特定的设计元素(主要是颜色和图片)。

我正在寻找最简单,最好的方法来为我的Expo React Native代码库标识内置的应用程序。

我的计划是将所有内容存储在相同的javascript代码库中,并通过应用程序名称加载正确的配置文件。

在这种情况下,我将在商店中获得一些应用程序:

  • BlueApp
  • RedApp
  • GreenApp

它们都将加载相同的博览会app: exp.host/@comp/colours 这个博览会的应用程序应该在BlueApp中将背景设置为蓝色,在RedApp中为红色。

!我不想拆离我的博览会应用程序,我仍然想用博览会来构建我的应用程序。

2 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解您的意思,但我有点想办法。

我不知道这是否是最好的方法。

您可以使用发布渠道来创建同一代码的3个不同版本。比起您可以使用Expo.Constants.manifest.releaseChannel加载频道的配置。

有关更多信息,https://docs.expo.io/versions/latest/distribution/release-channels

答案 1 :(得分:0)

通过执行expo start --config=some-app.json可以使用其他配置文件。我遇到的一个问题是,仍需要在特定位置使用某些资产(例如asset / images / icon.png)。

我想到的解决方案是每次启动项目时通过bash脚本切换项目。这样,您运行的开发也将发布,而无需大惊小怪expo可能支持或可能不支持的配置参数。

因此,在package.json中,您可以运行如下所示的命令:

./switch project1 && expo start

bash脚本会将src目录中的所有资产(包括app.json)同步到其预期路径。目录结构如下所示:

src
 - project1
     - app.json
     - assets
 - project2
     - app.json
     - assets

和脚本:

#!/bin/bash

if [ $1 == "swaggr" ] || [ $1 == "chatsera" ] 
then 
    echo "switching to $1"
    unlink app.json
    cp ./src/$1/app.json ./app.json
    rsync -rvz ./src/$1/assets/ ./assets/
else
    echo "could not switch project. $1 is invalid"
fi

如果使用这种方法,我可能会在app.json和.gitignore中添加所有资产。

相关问题