一个角度工件的main.js(编译的js文件)文件替换为另一个构建工件



我们有多个环境,我们有具有后端配置的环境文件,我们在构建过程中使用这些文件。示例:ng build--c UAT

但我在这里遇到了一个问题,现在我们决定只构建一次,并部署多个环境中的同一个工件。

我知道使用Angular服务和APP_INITIALIZER令牌可以实现这一点,但由于某些原因,我们无法使用它。

因此,我决定在构建之后,用各自的env配置值修改编译的js文件(main.js)。但由于env变量及其模式的数量增加,这变得越来越困难。

所以我想到了下面的过程,请建议它可以使用,或者我不应该

1,我将使用";ng构建-c UAT";。

2,我会对所有其他环境做同样的事情,现在我总共有3个dist文件夹(webpack)。

3,我将UAT工件部署到所有环境,但在将其部署到Preprod之前,我将替换";main.js";因为只有main.js文件具有所有的环境配置。并保持所有其他js文件不变。

4,我将重复同样的产品部署。

请就这种方法提出建议。

您做出了一个很好的选择,决定不使用特定于环境的构建,因为它们总是会再次困扰您。但是使用您的方法,您只会转移问题,因为您仍然需要调整构建工件。当您的配置是高度动态的时,我建议您重新考虑在运行时不使用服务动态加载数据的决定,或者至少说明这种方法不适用的限制。

假设您仍然希望依赖于静态文件内容,那么您可能会感兴趣的文章《如何使用环境变量来配置Angular应用程序而无需重建》。它建议从嵌入式env.js脚本加载数据,并将其作为Angular服务公开。虽然有人可能会说这只会进一步转移问题,但它至少允许您的构建工件保持不变。例如,如果您从nginx docker容器运行应用程序,则可以在Web服务器启动之前动态替换env.js中的值。我使用的是这种方法的简化版本,虽然它仍然感觉有点粗糙,但它确实有效!祝你好运

最新更新