我将 React 与 next.js 和 Google Cloud 函数结合使用来为应用程序提供服务。我也使用firebase。我正在寻找为 3 个环境自动配置暂存和生产配置的最佳方法。
- 生产:使用生产凭证
- 登台:使用登台凭证
- 本地:也使用登台凭证
我有两个 Firebase 项目,目前使用firebase.js
我的应用程序中的文件在配置之间切换。我换出配置对象,然后部署。我希望能够在本地运行应用程序,并且在暂存和生产中运行,而无需更改部署中的任何内容,因为它会导致错误。
我的问题是为两个云项目设置不同的环境变量......我可以读取我在那里设置的云环境变量,但只能在云函数环境中,而不是在面向客户端的应用程序中,这是我目前所在的位置交换配置。
我可以看到这是通过以下方式解决的:
- 谷歌云平台环境变量(但我已经尝试并未能从客户端读取它们)。也许我会在运行时更改 next.js 配置以在云中读取某些内容,而不是在部署时更改配置?
- 本地 nextjs 环境配置,但这对两个不同的服务器一无所知(只有 dev vs prod 与本地和云不完全匹配)
- React dotenv 配置(同上点)
- 编译时交换配置的 webpack / npm 配置
firebase use [environment]
在部署时根据命令行交换 env
第 1 点和第 5 点似乎是最有可能进行自动和无缝部署的候选者,但我不知道如何在 React 中读取 GCP 配置变量,对于第 5 点,我不知道如何运行可以交换的自定义脚本基于firebase project
当前在命令行上使用的变量。
我在这方面看到的大多数信息并没有完全解决这个问题 - 所有的 env 变量要么仅在云函数中,要么区分local
vscloud
或dev
vs prod
,但无法区分两个云和使用与其中之一相同的配置的本地云。
有人一定有过这方面的经验吗?