【问题标题】:TFS npm install Build Task Hanging?TFS npm install 构建任务挂起?
【发布时间】:2017-10-24 11:12:36
【问题描述】:

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

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

原来我添加任务的时候,我不认为它会这样挂。我不确定发生了什么变化。

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

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

【问题讨论】:

    标签: npm tfs tfsbuild npm-install


    【解决方案1】:

    根据你的描述,是有道理的。 NPM 安装只是在浪费时间,因为它需要 3-4 分钟来确定软件包是否已安装。

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

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


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

    对于运行 [npm|bower|composer|jspm] 的构建进程很有用 每次安装作为其构建过程的一部分。由于依赖 不要经常更改,这通常意味着构建时间较慢。 npm 缓存 通过缓存以前安装的缓存来帮助缓解这个问题 依赖于构建机器。 npm-cache 可以是一个插件 替换任何运行 [npm|bower|composer|jspm] 的构建脚本 安装。

    工作原理

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

    供您参考的样本:Speed up your npm dependent CI build

    【讨论】:

    • 我“降级”到了最新的 LTS 版本 (6.11.4) 并且成功了!非常感谢@Patrick-MSFT!
    • 我使用 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 分钟才能完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 2018-02-10
    相关资源
    最近更新 更多