今天在使用npm安装程序时出现了以下问题如下:
npm cache clean --force
,若这个方法没有生效,建议找到npm文件(可通过npm config list
), npm cache add <tarball file>
添加文件
npm cache add <folder>
添加文件夹
npm cache add <name>@<version>
通过npm添加文件并规定版本号(可选)
npm cache clean [<path>]
已知路径的缓存清除
npm cache verify
验证缓存包
三个常用命令: add:将指定的包添加到本地缓存中。此命令主要用于NPM内部,但它可以提供一种将数据显式添加到本地安装缓存的方法。
clean:删除缓存文件夹中的所有数据。
verify:验证缓存文件夹的内容,垃圾收集任何不需要的数据,并验证缓存索引和所有缓存数据的完整性。
那么为什么缓存包会出现问题呢?官网上是这样说的:
npm将缓存数据存储在已配置缓存中的opaque目录中,名为_cacache。 此目录是基于cacache的内容可寻址缓存,它存储所有http请求数据以及其他与包相关的数据。 该目录主要通过pacote访问,pacote负责从npm @ 5开始的所有包提取。
通过缓存的所有数据都经过完全验证,以确保插入和提取的完整性。 高速缓存损坏将触发错误,或发出信号以确认必须重新获取数据,这将自动执行。 出于这个原因,除了回收磁盘空间之外,永远不需要清除缓存,因此为什么现在清理需要--force运行。
目前没有通过npm公开的方法来检查或直接管理此缓存的内容。 要访问它,必须直接使用cacache。
npm不会自行删除数据:缓存将随着新软件包的安装而增长。 简而言之就是npm会把缓存存在一个名为_acache的目录中,缓存会在所有用到npm包的地方,所以会出现损坏,这样就导致npm运行时出错,而catch的清空是需要携带 --force参数方可生效,此外NPM不会自行删除数据:随着新包的安装,缓存将增长。