如何在 Windows 上更改 npm 的缓存路径(或完全禁用缓存)?
Posted
技术标签:
【中文标题】如何在 Windows 上更改 npm 的缓存路径(或完全禁用缓存)?【英文标题】:How can I change the cache path for npm (or completely disable the cache) on Windows? 【发布时间】:2013-01-27 23:11:18 【问题描述】:我已经在我的 Windows 7 x64 开发机器上安装了 Node.js,手动方式:
mkdir C:\Devel\nodejs
cd C:\Devel\nodejs
set NODE_PATH=%CD%
setx /M PATH "%PATH%;%NODE_PATH%"
setx /M NODE_PATH "%NODE_PATH%\node_modules"
我已将主要的node x64 binary 和npm package manager 放在C:\Devel\nodejs
中。工作就像一个魅力,我可以更新主二进制文件而无需处理安装程序。
我无法解决的唯一问题是移动缓存文件夹。当我安装本地包时:
npm install express
...缓存位于%APP_DATA%\npm-cache
文件夹下。我想改成:
C:\Devel\nodejs\npm-cache
如何更改 npm 缓存文件夹,或完全禁用它?
【问题讨论】:
位置不应该是:%APPDATA%\npm-cache 【参考方案1】:您可以使用 npm
命令行更改 npm 缓存文件夹。 (见https://docs.npmjs.com/cli/v6/using-npm/config#cache)
所以你可能想试试这个命令:
> npm config set cache C:\Devel\nodejs\npm-cache --global
【讨论】:
另外请注意,如果你要走 npmrc 路线,全局 npmrc 文件并不直接位于 $PREFIX,而是位于 $PREFIX\etc 在 Windows 7 上使用 Cygwin 执行此操作时,我必须在每个反斜杠前添加一个正斜杠以避免反斜杠被删除。 执行后执行npm config list
验证设置是否正确
我无法在链接文档的任何位置找到您所指的命令
运行此命令后运行npm --global cache verify
【参考方案2】:
此外,我发现运行更新命令也可以 - 例如:
npm update npm
最后,可以检查他们的 npm-cache 目录,看看是否被填满。
【讨论】:
【参考方案3】:您还可以使用 export npm_config_cache=/path/to/cache
(Unix) 或 set npm_config_cache=C:\path\to\cache
(Win) 设置环境变量来替代 npm config set
(这适用于 npm 中的所有配置选项)。
对于使用 docker 的任何人,您都可以在运行时添加 env var:
docker run -e npm_config_cache=/path/to/cache mydockerimage:tag
【讨论】:
只是为了好奇,我为什么要使用 docker 更改缓存目录?您知道哪种情况可以利用这一点? @fudo 使用持久缓存作为 docker 的卷挂载通常很有用。如果我在 docker 中反复运行npm install
,我可以从我的主机上挂载一个缓存目录,这样我每次运行时都不会丢失缓存。【参考方案4】:
在 Windows 中,您可以简单地 cd 到所需的缓存文件夹并执行 npm set cache --global
【讨论】:
【参考方案5】:您还可以执行以下操作:
为了有你想要的缓存路径,安装单个包时:
npm install packageName --cache path/to/some/folder
对于 package.json 中的所有包都有你想要的缓存路径:
只要在 package.json 所在的目录下就可以了
npm install --cache path/to/some/folder
你可能在 npm 文档中找不到这个,但我已经用 npm 6 尝试过它并且它可以工作。 看起来它从 npm 5 开始就可以工作了[参考:How to specify cache folder in npm5 on install command?
【讨论】:
【参考方案6】:解决方案
将以下代码粘贴到 npmrc 文件中。
npmrc 文件的位置:C:\Program Files\nodejs\node_modules\npm\npmrc
prefix=D:\nodejs\npm
cache=D:\nodejs\npm-cache
注意事项: 没有“。”在 npmrc 前面
图表
NPMRC 文件夹如下所示
NPMRC 内容如下所示
希望对您有所帮助。干杯
【讨论】:
以上是关于如何在 Windows 上更改 npm 的缓存路径(或完全禁用缓存)?的主要内容,如果未能解决你的问题,请参考以下文章