TFS npm安装Build Task挂?

时间:2017-10-24 00:13:35

标签: npm tfs tfsbuild npm-install

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

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

最初当我添加任务时,我认为它不会像这样挂起。我不确定发生了什么变化。

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

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

1 个答案:

答案 0 :(得分:2)

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

Fist尝试从控制台运行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会重新下载   依赖项并将它们存储在缓存目录中。下一次   npm-cache运行并看到相同的配置文件,它会找到tarball   在缓存目录中并解压当前的依赖项   工作目录。

供您参考的示例:Speed up your npm dependent CI build