【问题标题】:NPM: Only install missing - how to speed up npm installNPM:仅安装缺失 - 如何加快 npm 安装
【发布时间】:2016-09-05 20:36:34
【问题描述】:

我的 npm 脚本中有很多开发依赖项。 npm install 第一次需要几分钟,没关系。

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

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

【问题讨论】:

  • 您使用的是托管构建代理吗?

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


【解决方案1】:

如果您使用on-premise build agents 进行构建,您可以使用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 将新下载的 tars 依赖项并将它们存储在缓存目录中。下一次 npm-cache 运行并看到相同的配置文件,它会找到 tarball 在缓存目录中解压当前目录下的依赖 工作目录。

你也可以试试npm-install-missing。

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

【讨论】:

  • 感谢您的解释。希望我每次都可以将相同的构建代理与我自己的用户配置文件一起使用。没什么大不了的,因为我们将迁移到内部 TFS,这将与 npm-cache 一起使用,因为每次构建的代理都是相同的。
猜你喜欢
  • 1970-01-01
  • 2017-02-04
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 2014-06-15
相关资源
最近更新 更多