如何在没有多个构建的情况下将 React 应用程序部署到多个环境?

Thi*_*ult 7 continuous-integration multistage reactjs azure-devops aspnetboilerplate

我正在使用 Azure DevOps 设置 CI/CD 管道以自动将 React 应用程序部署到多个环境。据我了解,在 npm 构建期间使用了环境变量 (REACT_APP_*)。如何在不为每个环境创建步骤的情况下设置构建阶段?

我正在使用一个带有 React 前端的新ASP.Net Boilerplate项目。

.

这是我目前所拥有的

我在 package.json 中复制了构建任务以允许多个环境

"scripts": {
  ...
  "build": "set REACT_APP_ENV=production && react-app-rewired build --scripts-version react-scripts-ts",
  "builduat": "set REACT_APP_ENV=uat && react-app-rewired build --scripts-version react-scripts-ts",
...
}
Run Code Online (Sandbox Code Playgroud)

然后在我的 CI 管道中,我复制了构建任务

- script: yarn builduat
  displayName: '[UAT] Yarn build front-end'
  workingDirectory: $(WorkingDirectoryReact)

- script: yarn build
  displayName: '[PROD] Yarn build front-end'
  workingDirectory: $(WorkingDirectoryReact)
Run Code Online (Sandbox Code Playgroud)

我不想为每个环境复制东西,那么理想的解决方案是什么?我真的不想在 CD(部署阶段)期间构建解决方案

Thi*_*ult 5

我最终编写了一个 PowerShell 脚本来替换构建工件中的内容。

所有详细信息都可以在那里找到:https://github.com/Thibaultce/react-azuredevops-buildonce-deploymany