You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure发布阶段为Nx单体仓库配置环境变量值?

在Nx单体仓库发布阶段设置环境变量的方案

要在发布阶段而非构建阶段注入环境变量,核心思路是让构建产物保持通用,在发布时动态替换或注入变量,以下是几种可行的落地方法:

方法一:发布脚本动态替换占位符

这是最直接的方案,适合传统服务器部署:

  • 步骤1:构建时使用占位符
    把代码中原本的process.env.NX_API_URL替换为不会被Nx构建工具处理的占位符,比如__NX_API_URL__。
  • 步骤2:创建环境配置文件
    在项目根目录新建env-configs文件夹,按环境创建配置文件:
    • env-configs/qa.env:NX_API_URL=api-url-qa.com
    • env-configs/test.env:NX_API_URL=api-url-test.com
  • 步骤3:编写发布脚本
    以Shell脚本为例,编写publish-to-qa.sh:
    #!/bin/bash
    # 加载QA环境变量
    source env-configs/qa.env
    # 替换构建产物中的占位符(替换路径根据你的实际构建产物位置调整)
    sed -i "s/__NX_API_URL__/$NX_API_URL/g" dist/apps/your-app/index.html
    # 执行发布命令(比如rsync上传到服务器、调用云平台部署接口)
    your-deploy-command
    
    同理编写publish-to-test.sh对应Test环境。
  • 步骤4:添加npm脚本
    在package.json中添加快捷命令:
    {
      "scripts": {
        "publish:qa": "./publish-to-qa.sh",
        "publish:test": "./publish-to-test.sh"
      }
    }
    
    发布时直接运行npm run publish:qa即可。

方法二:容器化部署时的运行时注入

如果用Docker/K8s这类容器化部署,推荐这种方式:

  • 步骤1:构建通用镜像
    构建Nx应用时不固化环境变量,保持产物通用性。
  • 步骤2:编写启动脚本
    新建start.sh脚本,在容器启动时生成动态配置文件:
    #!/bin/bash
    # 将环境变量写入前端可访问的配置文件
    echo "window.NX_ENV = { API_URL: '$NX_API_URL' };" > /usr/share/nginx/html/env-config.js
    # 启动服务(以Nginx为例,根据你的服务类型调整)
    nginx -g 'daemon off;'
    
  • 步骤3:在前端引入配置
    在index.html中添加脚本引入:
    <script src="/env-config.js"></script>
    
  • 步骤4:代码中读取变量
    前端代码通过window.NX_ENV.API_URL获取环境变量。
  • 步骤5:发布时传入变量
    部署容器时传入对应环境的变量,比如Docker命令:
    docker run -e NX_API_URL=api-url-qa.com your-nx-app-image
    

方法三:CI/CD平台直接注入变量

如果用GitHub Actions、GitLab CI这类工具,可以直接利用平台的环境变量能力:

  • 步骤1:在CI/CD平台配置环境变量
    分别在QA、Test环境的变量设置中添加NX_API_URL的对应值(建议用保密变量存储敏感信息)。
  • 步骤2:CI/CD流程中替换占位符
    以GitHub Actions为例,在发布步骤中添加替换逻辑:
    jobs:
      publish-qa:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - name: Setup Node.js
            uses: actions/setup-node@v4
            with:
              node-version: 20
          - name: Build Nx app
            run: nx build your-app
          - name: Replace API URL
            run: sed -i "s/__NX_API_URL__/${{ secrets.NX_API_URL_QA }}/g" dist/apps/your-app/index.html
          - name: Deploy to QA environment
            run: your-deploy-command
    
    这样每次触发QA环境的发布流程时,CI/CD平台会自动注入对应环境的变量。

内容的提问来源于stack exchange,提问作者codythedev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 01:00:48