我的npm脚本中有很多不确定因素。 npm install
第一次需要几分钟,没关系。
但是因为我正在与TFS构建服务器集成,所以它只需要安装一次npm。之后,npm install只是浪费时间,因为只需要2-3分钟来确定已安装的软件包。此外,它似乎总是使用-g全局标志重新安装包,即使存在。
如何检查包是否存在,如果是,请跳过npm install?
答案 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安装。