TFS npm install 构建任务挂起?

chr*_*989 5 tfs tfsbuild npm npm-install

我们正在使用 TFS 构建任务,其中一项任务正在运行npm install这不是通过批处理或 powershell 文件

它运行成功,但看起来它完成了,然后挂了大约 3 到 4 分钟。我知道这是因为任务摘要说它已成功完成,但它在 3 到 4 分钟内没有开始下一个任务。

本来我加任务的时候,我觉得不会这样挂的。我不确定发生了什么变化。

我尝试使用npm set progress=false,从该论坛推荐并在本文中进行了解释。我没有添加,npm-cache因为它似乎不相关;请记住,构建任务成功完成然后挂起。

什么可能导致 npm 任务在完成后挂起?

Pat*_*SFT 2

根据你的描述,这是有道理的。NPM install 只是浪费时间,因为需要 3-4 分钟才能 确定软件包已经安装。

首先尝试从控制台运行 npm 以查看 TFS 上的性能是否正常。如果您的所有 NPM 任务都花费很长时间,一种可能与 Nodejs 版本有关。

例如,您正在使用构建代理上安装的最新版本,例如 Nodejs (8.2.0)。然后降级到最新的 LTS(长期支持)版本 (6.11.1) 可能会解决您的问题。详情请看看这个博客


另一种方法是使用npm-cache作为替代方法,因为您使用本地构建代理进行构建。

它对于每次在构建过程中运行 [npm|bower|composer|jspm] install 的构建过程非常有用。由于依赖项不会经常更改,这通常意味着构建时间会变慢。npm-cache 通过在构建机器上缓存先前安装的依赖项来帮助缓解这个问题。npm-cache 可以直接替代任何运行 [npm|bower|composer|jspm] 安装的构建脚本。

怎么运行的

当您运行 npm-cache install [npm|bower|jspm|composer] 时,它首先根据请求的依赖项管理器在当前工作目录中查找 package.json、bower.json 或composer.json。然后,它计算配置文件的 MD5 哈希值,并在缓存目录(默认为 $HOME/.package_cache)中查找名为 .tar.gz 的文件。如果该文件不存在,npm-cache 将使用系统安装的依赖项管理器来安装依赖项。安装依赖项后,npm-cache 会压缩新下载的依赖项并将其存储在缓存目录中。下次 npm-cache 运行并看到相同的配置文件时,它将在缓存目录中找到 tarball 并在当前工作目录中解压依赖项。

供您参考的示例:加速您的 npm 依赖 CI 构建

  • 我使用 Node 8.9 LTS(npm@5.5.1、node@v8.9.0、build agent@2.124.0、npm build task@0.2.22)也有同样的约 6 分钟延迟。无论使用哪个 npm 命令,即使是“npm version”也需要 6 分钟才能完成。 (2认同)