在VSTS中缓存npm install任务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在VSTS中缓存npm install任务相关的知识,希望对你有一定的参考价值。
我在VSTS中配置了一个私有代理,并在全球范围内安装了NPM。当我尝试通过构建任务安装NPM时,它仍在为每个构建安装NPM软件包,这需要花费大量时间 - 大约12分钟。
如何缓存NPM安装以减少构建时间?
我们使用npm-cache,npm-cache是一个节点模块,它将计算你的package.json文件的哈希值,它将在你的构建服务器上创建zip文件夹,其内容为node_modules,现在npm install减少为提取zip每个构建(当然只有在你没有实际更改package.json的情况下)。
这个想法是:第一次工具下载npm包并在本地保存它们,第二次如果package.json
没有改变,他从本地磁盘获取包并将它们复制到构建代理文件夹,只有当package.json
改变时他从互联网上下载包裹。
- 在构建计算机上安装npm-cache:
npm install npm-cache -g
- 在构建定义中添加命令行任务(工具:
C:\Windows\User\AppData\Roaming\npm\npm-cache
(如果将工具添加到环境路径变量,则只需npm-cache
);参数:install npm
;工作文件夹:$(Build.SourcesDirectory)
(或package.json
所在的位置)。
遗憾的是,我们无法将NPM安装缓存为现在没有这样的内置功能。
然而,已经提交了一个用户声音来建议该功能:Improve hosted build agent performance with build caches,似乎VSTS团队现在正积极致力于此...
现在,你可以尝试speed Up NPM INSTALL on Visual Studio Team Services
MS终于实现了这个功能(目前处于测试阶段)https://docs.microsoft.com/en-us/azure/devops/pipelines/caching/index?view=azure-devops#npm
从那里:
variables:
npm_config_cache: $(Pipeline.Workspace)/.npm
steps:
- task: CacheBeta@0
inputs:
key: $(Build.SourcesDirectory)/package-lock.json
path: $(npm_config_cache)
displayName: Cache npm
- script: npm ci
以上是关于在VSTS中缓存npm install任务的主要内容,如果未能解决你的问题,请参考以下文章
仅当子目录中的文件已更改时,才运行VSTS构建任务以运行“npm build”
npm install 后 Gitlab Shared Runner docker build
VSTS 软件包提要:配置客户端以使用 vsts 提要后无法安装公共 npm 软件包
Node JS - Grunt 任务中的 child_process spawn('npm install') 导致 ENOENT 错误