我们正在使用TFS构建任务,其中一个任务运行npm install
。 这不是通过批处理或powershell文件。
它成功运行但它看起来完成然后挂起大约3到4分钟。我知道这一点,因为任务摘要说它已成功完成,但它没有开始下一个任务3到4分钟。
最初当我添加任务时,我认为它不会像这样挂起。我不确定发生了什么变化。
我尝试使用this forum推荐的npm set progress=false
并在this article中进行了解释。我没有添加npm-cache
因为它似乎没有相关性;记住,构建任务成功完成然后挂起。
什么可能导致npm任务在完成后挂起?
答案 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 在缓存目录中并解压当前的依赖项 工作目录。