如何在 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 的缓存路径(或完全禁用缓存)?的主要内容,如果未能解决你的问题,请参考以下文章

更改npm默认路径

Node.js配置npm全局模块路径和缓存路径

Node.js配置npm全局模块路径和缓存路径

Nodejs安装后修改全局路径配置

NPM下载路径配置

如何更改 Linux 的部署路径?