首页 > 解决方案 > Azure DevOps Pipelines - npm 任务非常慢 - 1200 个包需要 13 分钟

问题描述

我有一个在 Azure DevOps 中非常慢的 Npm 任务:

- task: Npm@1
  inputs:
    command: 'custom'
    customCommand: 'install --prefer-offline --no-audit --unsafe-perm=true'
    workingDir: $(Build.SourcesDirectory)/src/xxx.WebHost/ClientApp
  condition: ne(variables.NPM_CACHE_RESTORED, 'true')

这是一个非常简单的任务。--prefer-offline --no-audit --unsafe-prem=true大约需要2分钟的时间。

added 1236 packages from 1289 contributors in 791.318s

那是大约13分钟。本地需要几分钟。它在本地更快,但这太疯狂了。我已经实现了缓存来帮助以下构建。这些不能为不同的分支共享...

这是托管在East US 2.

我在欧洲有其他账户,运行速度更快:

added 1460 packages from 1339 contributors and audited 1479 packages in 39.661s

真的West Europe那么快吗?

我在这里做的事情真的很愚蠢还是很npm慢?有没有破损

我知道有替代方案npm。我只是想让 100% 确定这不是我做错的事情。

更新 1:

刚刚发现这可能是有用的信息。我们正在运行:

pool:
  vmImage: ubuntu-latest

标签: npmazure-devopsazure-pipelinesnpm-scripts

解决方案


我经历过它在运行和代理之间有所不同。

在当前的项目中,我们在欧洲西部的 azure 运行构建管道,并且相同的构建可能需要 5 到 25 分钟,具体取决于运行构建的代理。

我们这样做: 设置节点版本 升级 npm NPM 安装(包比你少) 使用 npm 构建(我们在一个 monorepo 中构建 5 个不同的包) linting

我们目前正在使用最新的 Windows,它们可能会有很大差异。大多数情况下,我们的构建需要 7-10 分钟,但有时如果我们得到一个快速代理,它们会在 5 分钟内完成。有时它可以在同一构建的另一个代理上运行 20 分钟。


推荐阅读