首页 > 解决方案 > 为多个应用程序使用单个 expo 代码库

问题描述

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

我正在寻找最简单和最好的方法来识别为我的 Expo React Native 代码库构建的应用程序。

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

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

所有这些都将加载相同的博览会app: exp.host/@comp/colours 并且此博览会应用程序应在 BlueApp 中将背景设置为蓝色,在 RedApp 中将背景设置为红色。

!我不想分离我的世博会应用程序,我仍然想用世博会构建我的应用程序。

标签: react-nativeexpo

解决方案


可以通过执行来使用不同的配置文件expo start --config=some-app.json。我遇到的一个问题是在特定位置(例如 assets/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

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


推荐阅读