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

Azure Pipeline中ArchiveFiles任务忽略.next/.bin文件夹求解决方案

问题:Azure Pipeline打包NextJS应用时丢失关键文件夹

在Azure Pipeline中完成Node依赖安装和NextJS应用构建后,使用ArchiveFiles任务创建用于发布至Web App Service的.zip包,发现生产部署必需的.next、node_modules/.bin等文件夹被忽略。已通过Copy Files任务确认这些文件夹确实存在,寻求能完整打包这些文件夹的方法。

Pipeline片段如下:

- task: Npm@1
  inputs:
    command: 'install'
    workingDir: '$(Build.SourcesDirectory)/roam-web-app-ssr'
    verbose: true

- task: Npm@1
  inputs:
    command: 'custom'
    workingDir: '$(Build.SourcesDirectory)/roam-web-app-ssr'
    customCommand: 'run build'
    verbose: true

- task: ArchiveFiles@2
  inputs:
    rootFolder: '$(Build.SourcesDirectory)/roam-web-app-ssr'
    includeRootFolder: false
    archiveType: 'default'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    replaceExistingArchive: false
    
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: "$(Build.ArtifactStagingDirectory)"
    ArtifactName: "drop"
    publishLocation: "Container"

解决方案

1. 显式指定要包含的文件/文件夹

ArchiveFiles任务默认可能忽略以点开头的隐藏文件夹,可通过includeFiles参数明确列出需要打包的内容,确保关键文件夹被包含:

- task: ArchiveFiles@2
  inputs:
    rootFolder: '$(Build.SourcesDirectory)/roam-web-app-ssr'
    includeRootFolder: false
    archiveType: 'default'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    replaceExistingArchive: false
    includeFiles: |
      **/*
      .next/**/*
      node_modules/.bin/**/*

**/*匹配所有普通文件和文件夹,再显式补充点开头的关键目录,覆盖默认的忽略规则。

2. 使用命令行工具手动打包

绕过ArchiveFiles任务,直接用PowerShell或Bash的原生打包命令,这类工具不会默认忽略点开头的文件夹:

PowerShell 示例

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      Compress-Archive -Path "$(Build.SourcesDirectory)/roam-web-app-ssr/*", "$(Build.SourcesDirectory)/roam-web-app-ssr/.*" -DestinationPath "$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip" -Force

Bash 示例

- task: Bash@3
  inputs:
    targetType: 'inline'
    script: |
      cd $(Build.SourcesDirectory)/roam-web-app-ssr
      zip -r $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip . -x "*.git*"

-x "*.git*"用于排除.git相关文件,避免不必要的体积占用。

3. 检查忽略规则配置

确认项目的.gitignore文件没有将.next或node_modules/.bin加入忽略列表;同时检查ArchiveFiles任务的ignoreFile参数是否被设置为引用了这类忽略文件,确保没有额外的排除规则导致关键文件夹丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:35:21