reactjs 如何为应用服务上使用Azure devops pipeline部署的react应用设置.env

7rtdyuoh  于 2023-01-25  发布在  React
关注(0)|答案(2)|浏览(115)

我在Azure Devops上使用CI/CD开发了一个管道,用于在Azure Web应用服务上部署React应用。在本地,我使用的是.env文件,而此文件位于. gitignore上。我想知道如何设置.env以便在生产中阅读它。

xdnvmnnf

xdnvmnnf1#

您可以查看以下文档:
https://create-react-app.dev/docs/adding-custom-environment-variables/#adding-development-environment-variables-in-env
.env文件签入到源代码管理中(排除.env*.local)。
如果您不想将.env文件签入DevOps,可以在管道变量中添加变量:

此外,您可以参考以下案例获得更多建议:
How to use environment variables in React app hosted in Azure

n53p2ov0

n53p2ov02#

许多与这个问题有关的解决方案可能不起作用,但我用下面的方法解决了它。然而,首先让我解释为什么其他解决方案可能(不应该)不起作用(如果我说错了请纠正我)

  • 添加管道变量(即使它们是环境变量)应该不起作用,因为react应用在客户端运行,并且没有服务器端代码可以向react应用注入环境变量。
  • 由于同样的原因,在经典管道上安装环境变量任务不应该起作用。
  • 出于同样的原因,添加到Azure应用程序服务中的应用程序设置不应起作用。
  • 在git repo中存放.env或.env.development或.env.production文件不应该是一个好的做法,因为这可能会泄露API密钥和其他敏感信息。
    所以我的解决方案是

步骤1:将所有这些.env文件作为安全文件添加到Azure devops库。可以使用DownloadSecureFile@1管道任务(yml)在生成计算机中下载这些安全文件。这样,我们可以确保在管道中的任务yarn build --mode development之前在生成计算机中提供正确的.env文件。

第二步:在你的azure yml管道中适当的地方添加以下任务。如果你想看到一个完整的例子,我已经创建了一个github repo**https://github.com/mail4hafij/react-yarn-azure-pipeline**。

# Download secure file from azure library
  - task: DownloadSecureFile@1
    inputs:
      secureFile: '.env.development'

  # Copy the .env file
  - task: CopyFiles@2
    inputs:
      sourceFolder: '$(Agent.TempDirectory)'
      contents: '**/*.env.development'
      targetFolder: '$(YOUR_DEFINED_PROJECT_ROOT_FOLDER_VARIABLE)'
      cleanTargetFolder: false

请注意,安全文件无法编辑,但您可以随时重新上传。

相关问题