禁用npm缓存

时间:2016-03-22 13:00:20

标签: node.js npm

前段时间我在构建机器上遇到了npm缓存问题。我们不时手工做npm cache clean,这解决了我们仍然不确定导致它们的原因的各种问题。所以经过一段时间我们在所有构建脚本中都包含了npm cache clean,从那时起我们就没有npm i的神秘问题,但是现在并行构建显然会相互影响。

对我来说,最好的解决方案似乎是完全关闭了npm缓存机制,但我找不到如何做到这一点。

2 个答案:

答案 0 :(得分:12)

根据npm-config的记录:

力§ 默认值:false 类型:布尔 使各种命令更加强大。

  1. 生命周期脚本故障不会阻止进度。
  2. 发布Clobbers先前发布的版本。
  3. 从注册表中请求时跳过缓存。
  4. 防止检查是否破坏了非npm文件。

也许使用-f / --force是禁用npm缓存的最简单方法。

npm install --force

答案 1 :(得分:1)

就我而言,在用于构建(Windows)的VM上运行“ npm install”的多个实例时,我遇到了类似的问题

由于它是仅用于构建的VM,因此没有其他程序可以锁定文件。我尝试禁用了各种无效的防病毒设置。 “ npm缓存清除”和“ npm缓存验证”有效,但是对我来说这不是一个正确的解决方案,因为我无法猜测何时有人会针对不同的发行版/环境从Jenkins触发构建作业,从而导致“ npm install”的多个实例,因此我无法将其添加到构建脚本中,也无法每次都登录到VM并手动清除/删除缓存文件夹。

最后,经过一番研究,我最终使用以下命令为每个作业使用单独的缓存路径运行“ npm install”:

npm install --cache path/to/some/folder

由于所有同时运行的作业现在具有单独的缓存路径,而不是公用的全局路径(Users / AppData / Roaming /),因此此问题已解决,因为作业不再尝试锁定和访问相同的文件,来自公共npm缓存。

请注意,您可以安装具有缓存路径的单个软件包,如下所示:

npm install packageName --cache path/to/some/folder

我无法在npm文档中找到这种提供高速缓存路径的方法,但是我尝试了一下并成功了。 我正在使用npm6,自从npm5以来,它好像在评论中提到了@ArchNoob一样