# npm 快取怎麼清？會刪掉專案的相依套件嗎？

> npm 快取占用太多空間？用 MangoDisk 查看大小並清理下載快取，或使用 npm 指令處理。一次分清快取與 node_modules，不必刪除原始碼或重裝相依套件。

專案早就沒在用了，當初安裝套件留下的 npm 快取卻可能還在占空間。它通常放在使用者目錄裡，不一定會隨著專案資料夾一起刪除。

**npm 下載快取可以清理，它和專案裡的 node_modules 是兩回事。** 在正常的快取設定下，清理下載快取不會移除已安裝的相依套件，也不必重裝 Node.js；只是日後安裝套件時，可能需要重新下載。

不想翻隱藏資料夾，可以用 [MangoDisk](/tw) 一起找出 npm 和其他支援的開發工具快取，直接比較大小。先看哪一項值得清，就不用對著陌生的資料夾猜用途。

## 先看看 npm 快取占了多少空間

開啟[深度清理](/tw/docs/features/deep-clean)，執行掃描，找到 npm 快取項目。展開結果，就能查看路徑、容量和清理說明，不必自己逐一找資料夾。

![MangoDisk 深度清理列出 npm 等開發工具快取的容量與勾選狀態](https://assets.mangodisk.app/images/screenshots/windows/tw/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/)，刪掉後，下次安裝取得的版本可能改變。

## 用指令清理 npm 快取

Windows 開啟 PowerShell，macOS 開啟「終端機」，先查目前的快取位置：

```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 的[磁碟空間分析](/tw/docs/features/disk-analysis)，選擇存放專案的磁碟或資料夾。矩形圖的方塊越大，占用就越多；點進去能繼續比較裡面的資料夾，不用逐個專案開啟內容視窗查大小。

![MangoDisk 磁碟空間分析用目錄清單和矩形圖呈現資料夾大小](https://assets.mangodisk.app/images/screenshots/windows/tw/light-05-disk-space-analysis.jpg)

如果占用最多的確實是暫時不用的相依套件，可以回到深度清理，檢查支援清理的專案建置產物。**刪除專案相依套件和清 npm 下載快取，是兩種不同的操作。** 前者清掉後，再執行專案就需要重新安裝；原始碼、鎖定檔，以及自己改過的套件內容要先保留好。近期還在用的專案，不必為了騰空間反覆重裝。

資料夾很大，不代表就可以刪除。在磁碟空間分析中手動刪除會永久移除檔案，不經過資源回收筒或垃圾桶。不確定用途的先保留，詳見[安全清理指南](/tw/docs/safety)。

## 把各種快取放在一起比較

只清一份 npm 快取，用指令就能完成。想順便看看其他工具、舊專案留下多少檔案，MangoDisk 會更方便：在同一個畫面比較大小，再挑出值得清理的項目。

[下載 MangoDisk](/tw)，先掃描看看。免費開源，支援 Windows 和 macOS，不必註冊或登入；本文的掃描與清理都在本機完成，不需要啟用 AI。

延伸閱讀：[整理 Codex 的磁碟占用](/tw/blog/codex-disk-usage) · [Cargo 快取和 target 資料夾，哪些可以刪？](/tw/blog/cargo-cache-vs-target-folder)
