# npm 缓存怎么清理，会删掉项目依赖吗？

> npm 缓存占用太大？用 MangoDisk 查看并清理下载缓存，分清它和 node_modules 的区别；也可用 npm 命令清理，不必删除项目源码或重装依赖。

项目早就不做了，安装依赖时留下的 npm 缓存却可能还在占空间。它通常藏在用户目录里，删掉项目文件夹也不一定会跟着消失。

**npm 下载缓存可以清理，它和项目里的 node_modules 不是一回事。** 在正常的缓存配置下，清理下载缓存不会卸载项目依赖，也不需要重装 Node.js；以后安装软件包时，可能需要重新下载。

不想翻隐藏目录，可以用 [MangoDisk](/zh) 把 npm 和其他受支持的开发缓存一起找出来，直接比较占用。先看哪一项值得清，再决定删什么，比对着陌生文件夹猜用途省事。

## 用 MangoDisk 看看 npm 缓存占了多少

打开[深度清理](/zh/docs/features/deep-clean)，运行扫描，找到 npm 缓存相关项目。展开后可以查看路径、容量和清理说明，不用自己到各个目录里查找。

![MangoDisk 深度清理列出 npm 等开发工具缓存的容量和勾选状态](https://assets.mangodisk.app/images/screenshots/windows/zh/light-01-deep-cleanup.jpg)

如果这次只想清 npm，先取消其他项目的选择，再勾选确认要清理的 npm 缓存。等正在进行的依赖安装和相关任务结束，核对清理范围与预计释放空间后，再确认执行。扫描本身不会删除文件。

MangoDisk 的内置规则覆盖 Windows 常见的 npm 缓存位置，以及 macOS 的 `~/.npm/_cacache`。**如果你改过 npm 缓存位置，先按下文查询实际路径**，不要把“没有扫描到”理解成“没有缓存”。

## 缓存和 node_modules，到底有什么区别？

两者都和软件包有关，但用途不同：缓存留着下载过的数据，`node_modules` 则是项目实际使用的依赖目录。[npm 的目录说明](https://docs.npmjs.com/cli/v11/configuring-npm/folders/)也将它们分开存放。

<table>
<thead>
  <tr>
    <th>
      内容
    </th>
    
    <th>
      用途
    </th>
    
    <th>
      清 npm 下载缓存时会怎样
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      npm 下载缓存
    </td>
    
    <td>
      供后续安装复用的数据
    </td>
    
    <td>
      被清理，需要时重新下载
    </td>
  </tr>
  
  <tr>
    <td>
      项目里的 <code>
        node_modules
      </code>
    </td>
    
    <td>
      项目运行、构建所需的依赖
    </td>
    
    <td>
      不会因此被卸载
    </td>
  </tr>
  
  <tr>
    <td>
      全局安装的命令行工具
    </td>
    
    <td>
      用 <code>
        npm install -g
      </code>
      
       安装的软件
    </td>
    
    <td>
      不会因此被卸载
    </td>
  </tr>
  
  <tr>
    <td>
      源码、<code>
        package.json
      </code>
      
      、<code>
        package-lock.json
      </code>
    </td>
    
    <td>
      代码、依赖声明与版本记录
    </td>
    
    <td>
      不是缓存清理对象，应保留
    </td>
  </tr>
</tbody>
</table>

这里说的是缓存与项目正常分开放置的情况。如果曾把缓存路径改到混放个人文件的目录，先整理配置，不要直接清空它。

尤其别为了清缓存，顺手删掉 `package-lock.json`。它记录着[确定的依赖版本](https://docs.npmjs.com/cli/v11/configuring-npm/package-lock-json/)，删除它还可能改变下一次安装得到的依赖版本。

## 想用命令行清理，可以这样做

Windows 打开 PowerShell，macOS 打开终端，先查询当前 npm 使用的缓存路径：

```bash
npm config get cache
```

这条命令只[读取配置](https://docs.npmjs.com/cli/v11/commands/npm-config/)，不会清理文件。默认位置通常是 Windows 的 `%LocalAppData%\npm-cache`，或 macOS 的 `~/.npm`。可以在文件资源管理器或 Finder 中打开返回的目录，查看大小。

如果只是怀疑缓存有问题，可以先验证并回收其中不再需要的数据：

```bash
npm cache verify
```

**verify 不只是检查，它也会整理无用缓存，但不是强制清空缓存的命令。**

确认需要释放这部分空间，且之后可以重新下载依赖时，等正在进行的安装和相关任务结束，再执行：

```bash
npm cache clean --force
```

它会删除 npm 下载缓存，不经过回收站。npm 要求加上 `--force`，是因为缓存通常能自行处理完整性问题，并不需要经常强制清空。具体行为见 [npm cache 官方文档](https://docs.npmjs.com/cli/v11/commands/npm-cache/)。

清完后，下次安装可能更慢，而不是更快。近期要离线工作，或者依赖的私有包暂时无法重新下载，就先保留缓存；它不是备份，但也没必要急着删。

## 清完还是不够，看看是不是项目目录占得多

下载缓存清掉了，旧项目里的 `node_modules` 还在。这也是为什么有时清理成功，磁盘却没多出多少空间。

这时可以切到 MangoDisk 的[磁盘空间分析](/zh/docs/features/disk-analysis)，选择开发项目所在的磁盘或文件夹。矩形图里方块越大，占用越多；点进去就能继续比较各个项目，不用逐个右键查看属性。

![MangoDisk 磁盘空间分析通过目录列表和矩形图定位占用较大的文件夹](https://assets.mangodisk.app/images/screenshots/windows/zh/light-05-disk-space-analysis.jpg)

如果大头确实是暂时不用的项目依赖，可以回到深度清理，检查受支持的项目构建产物。**这与清 npm 下载缓存是两种操作**：删除项目依赖后，再运行项目需要重新安装；源码、锁文件和自己改过的依赖内容要先保留好。今天还要继续用的项目，不必为了腾空间来回重装。

空间分析里的“大目录”也不等于“可以删除”。在其中手动删除会永久移除文件，不经过回收站，拿不准的内容先保留，详见[安全清理指南](/zh/docs/safety)。

## 一次看清缓存，不用挨个找目录

只清一份 npm 缓存，命令行就能完成。想顺便看看其他工具留下了多少缓存、哪些旧项目占着空间，MangoDisk 更方便：在同一个界面里比较，再挑值得清理的部分。

[下载 MangoDisk](/zh)，先扫描看看。免费开源，支持 Windows 和 macOS，无需注册或登录；本文用到的扫描和清理在本机完成，无需启用 AI。

相关阅读：[Codex 工作目录占用怎么清理](/zh/blog/codex-disk-usage) · [Cargo 缓存和 target 文件夹，哪些可以删](/zh/blog/cargo-cache-vs-target-folder)
