npm安装任务需要很长时间才能启动

时间:2018-01-12 08:21:18

标签: node.js ubuntu npm tfs tfsbuild

在TFS 2017构建定义上的npm安装任务在Ubuntu构建代理上启动时间太长:

2018-01-12T08:09:05.2269721Z [command]/usr/bin/npm install
2018-01-12T08:11:39.9810116Z npm WARN prefer global node-gyp@3.6.2 should be installed with -g
2018-01-12T08:11:43.0553293Z 
2018-01-12T08:11:43.0578286Z > node-sass@4.7.2 install /home/johnny/myagent/_work/9/s/node_modules/node-sass
2018-01-12T08:11:43.0601546Z > node scripts/install.js

我想知道是什么原因导致npm花了3分钟开始。如图所示,它从 08:09:05开始第一次回调是在3分钟后 08 :11:39

1 个答案:

答案 0 :(得分:1)

如果此行为仅发生在NPM install命令上,则有意义。 NPM安装只是浪费时间,因为确定已安装的软件包需要3-4分钟。

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

例如,您使用的是构建代理程序上安装的最新版本,例如nodejs(8.x.0)。然后降级到最新的LTS(长期支持)版本(6.11.1)可能会为您解决问题。详细信息请查看此blog

另一种方法是在构建计算机上使用{strong>缓存以前安装的依赖项 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