【问题标题】:How can I change the cache path for npm (or completely disable the cache) on Windows?如何在 Windows 上更改 npm 的缓存路径(或完全禁用缓存)?
【发布时间】: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 binarynpm package manager 放在C:\Devel\nodejs 中。工作就像一个魅力,我可以更新主二进制文件而无需处理安装程序。

我无法解决的唯一问题是移动缓存文件夹。当我安装本地包时:

npm install express

...缓存位于%APP_DATA%\npm-cache 文件夹下。我想改成:

C:\Devel\nodejs\npm-cache

如何更改 npm 缓存文件夹,或完全禁用它?

【问题讨论】:

  • 位置不应该是:%APPDATA%\npm-cache

标签: node.js npm


【解决方案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 内容如下所示

        希望对您有所帮助。干杯

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-10
          • 1970-01-01
          • 2011-02-09
          • 2014-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-15
          相关资源
          最近更新 更多