NPM:只安装缺失 - 如何加快npm安装

时间:2016-05-10 17:57:55

标签: tfs msbuild npm azure-devops npm-install

我的npm脚本中有很多不确定因素。 npm install第一次需要几分钟,没关系。

但是因为我正在与TFS构建服务器集成,所以它只需要安装一次npm。之后,npm install只是浪费时间,因为只需要2-3分钟来确定已安装的软件包。此外,它似乎总是使用-g全局标志重新安装包,即使存在。

如何检查包是否存在,如果是,请跳过npm install?

1 个答案:

答案 0 :(得分:6)

如果您使用npm-cache进行构建,则可以使用on-premise build agents作为替代方式。

  

对于运行[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   在缓存目录中并解压当前的依赖项   工作目录。

您也可以尝试使用npm-install-missing

但是,如果您使用的是VSTS托管构建代理,则无法执行此操作,因为每次使用托管构建代理对构建进行排队时,都会为构建分配一个干净的构建代理。这意味着代理上没有安装依赖包。您需要执行完整的npm安装。