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

Azure Build Pipeline构建Angular时dist文件夹生成后被删除问题咨询

解决Azure Build Pipeline中Angular构建dist文件夹无法发布的问题

我来帮你排查并解决这个问题,核心原因主要有两个:一是发布路径指向错误,二是默认工作目录的机制导致你没拿到正确的文件。

问题分析

  1. 发布路径不对:你当前PublishPipelineArtifact@1任务的targetPath设为$(Pipeline.Workspace)/s,这个目录是Azure Pipeline同步源代码的初始目录,而ng build --prod生成的dist文件夹是在项目根目录(对应变量$(Build.SourcesDirectory))下,所以你的发布任务根本没去读取dist文件夹,自然只会复制源代码。
  2. 潜在的目录清理风险:部分Pipeline任务执行时会自动清理临时目录,但最关键的还是你没指向正确的文件位置。

解决方案

方案1:直接发布dist文件夹

修改PublishPipelineArtifact@1任务的targetPath为dist文件夹的实际路径。默认情况下Angular构建会在项目根目录生成dist,所以用$(Build.SourcesDirectory)/dist即可;如果你的Angular项目有自定义项目名称(比如执行ng build --prod --project=my-app),路径要加上项目名:$(Build.SourcesDirectory)/dist/my-app。

修改后的完整管道配置:

trigger:
- master
pool: default
steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'
- script: |
    npm install -g @angular/cli
    npm install
    ng build --prod
  displayName: 'npm install and build'
- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.SourcesDirectory)/dist' # 指向正确的dist路径
    artifactName: 'angular-dist' # 自定义artifact名称,方便后续识别
    publishLocation: 'pipeline'

方案2:先复制dist到Pipeline工作区再发布(更稳妥)

如果担心构建目录被意外清理,可以先把dist复制到$(Pipeline.Workspace)目录(这个是Pipeline的安全工作区,不会被自动清理),再执行发布:

trigger:
- master
pool: default
steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'
- script: |
    npm install -g @angular/cli
    npm install
    ng build --prod
  displayName: 'npm install and build'
- task: CopyFiles@2
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)/dist'
    TargetFolder: '$(Pipeline.Workspace)/dist'
    CleanTargetFolder: true
  displayName: 'Copy dist to Pipeline workspace'
- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Pipeline.Workspace)/dist'
    artifactName: 'angular-dist'
    publishLocation: 'pipeline'

额外检查点

  • 确认ng build --prod命令执行成功:在Pipeline的日志里查看构建步骤的输出,确认dist文件夹已正常生成。
  • 若你的Angular版本较新,ng build --prod已被ng build --configuration production替代,不过旧版本的--prod参数仍然有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:32:40