nil*_*ptr 12
正如npm-config记录的那样:
force§ 默认值:false 类型:Boolean 使各种命令更有力。
- 生命周期脚本失败不会阻止进度。
- 发布clobbers以前发布的版本。
- 从注册表请求时跳过缓存。
- 防止检查破坏非 npm 文件。
也许使用-f
/--force
是禁用 npm 缓存的最简单方法。
npm install --force
Run Code Online (Sandbox Code Playgroud)
Dan*_* D. 11
您可以通过为一系列npm命令创建新目录并将其cache
设置为该空目录然后删除该目录来解决并行构建的问题.喜欢:
export npm_config_cache=$(mktemp -d)
npm ...
...
rm -rf $npm_config_cache
Run Code Online (Sandbox Code Playgroud)
这将消除对npm cache clean
总是以空缓存开始的需要.
就我而言,我在用于构建的 VM 上运行多个“npm install”实例时遇到了类似的问题(Windows)
由于它是一个仅用于构建的 VM,因此没有其他程序锁定文件。我尝试禁用各种无效的防病毒设置。“npm 缓存清除”和“npm 缓存验证”有效,但对我来说这不是一个正确的解决方案,因为我无法猜测何时有人会从 Jenkins 为不同的版本/环境触发构建作业,从而导致多个“npm install”实例,因此我无法将其添加到构建脚本中,也无法登录 VM 并每次手动清除/删除缓存文件夹。
最后,经过一番研究,我最终使用以下命令为每个作业运行了带有单独缓存路径的“npm install”:
npm install --cache path/to/some/folder
Run Code Online (Sandbox Code Playgroud)
由于所有同时运行的作业现在有一个单独的缓存路径而不是通用的全局路径 (Users/AppData/Roaming/),这个问题得到了解决,因为作业不再试图锁定和访问同一个文件,来自常见的 npm 缓存。
请注意,您可以使用缓存路径安装单个包,如下所示:
npm install packageName --cache path/to/some/folder
Run Code Online (Sandbox Code Playgroud)
我无法在 npm 文档中找到这种提供缓存路径的方法,但我试了一下,它奏效了。我正在使用 npm6 并且看起来它从 npm5 开始工作,正如评论中提到的@ArchNoob