如何部署React应用的多个功能分支以测试环境

时间:2018-11-07 14:58:34

标签: reactjs webpack deployment

我公司的遗留应用程序是带有Knockout前端的.NET MVC应用程序,并且我们将功能分支部署到我们的测试环境中,以便QA可以隔离地测试这些新功能。这些URL的结构如下:https://{testEnvOrigin}/{featureBranchName}
我们正在尝试在连接到我们服务层的静态React应用程序中复制此功能。这意味着我们需要根据要测试的分支动态设置基数href

我们正在使用Webpack来构建React应用,到目前为止,我们一直在使用dotenv。看来,除非我们为每个环境和每个分支都进行单独的Webpack构建,否则我们无法使用dotenv之类的东西来设置基本href和其他环境变量。我们试图避免大量构建,因为当我们将应用程序部署到新环境时,这会增加一些不可预测性。我们对此有些茫然,因为我们设计的每个解决方案都显得笨拙且难以维护。但是我们认为这不可能是一个不寻常的用例,因此也许我们只是缺少Webpack,dotenv或堆栈中可以为我们解决此问题的其他工具的实现的详细信息。

我们当前解决此问题的思路包括:

  1. 为每个分支和环境进行新的Webpack构建,以某种方式使Webpack知道功能分支名称,以便我们可以将其设置为环境变量。我们短暂地尝试了选项2,但不喜欢它,因此我们倾向于这样做。
  2. 一个笨拙的解决方案,我们将其保留为静态应用程序,并在应用程序初始化时从public目录中的JSON文件加载“环境变量”。这些变量包括基本href,该基本href作为basename传递到React Router。想法是,每次部署时,我们都将一个单独的JSON文件的内容复制到该公共JSON配置中。但这需要开发人员为自己的特定分支手动创建这些JSON配置,并将其中的base href属性设置为适当的名称。
    如有必要,我可以提供更多详细信息,但是我们真的不喜欢这样,所以我们放弃了它。
  3. 将其全部放弃并添加一个MVC层(可能通过.NET Core),该层MVC可以使用适当的所有变量来初始化应用程序。这将是一个不错的解决方案,但是我们不想仅使用整个其他UI框架来初始化单个视图。另外,在开发的后期,将其楔入现在的应用程序中将是一个适度的风险。

有人遇到过这个问题吗?您是如何解决它的,或者至少是接近它的?我开始觉得自己缺少一些明显的解决方案,因为我找不到在线解决该问题的任何资源。

很抱歉,是否曾经有人问过这个问题,但是我搜索过的所有内容都与React / SPA无关,或者与部署到GitHub Pages无关。

0 个答案:

没有答案