如何清除 Mac 上的 npm、Yarn 和 pnpm 快取
2026年10月13日更新
要清除 Mac 上的 npm 快取,執行 npm cache clean --force;pnpm 執行 pnpm store prune,Yarn 1 執行 yarn cache clean,Yarn 2 以上則執行 yarn cache clean --all。這些都是下載快取,所以刪除是安全的:唯一的代價是下次安裝時要重新下載套件。
WTMemory 是一款可免費檢視的 macOS 選單列 App,能在你清除任何東西之前,把這些快取的大小並排列出來。文末會再介紹;下面的指令只需要終端機。
我的套件快取用了多少空間?
先測量,才知道哪個快取值得處理。以下是 macOS 上的預設位置:
du -sh ~/.npm ~/Library/pnpm/store ~/Library/Caches/Yarn ~/.yarn/berry/cache \
~/.bun/install/cache ~/.cargo/registry ~/.cargo/git ~/.gradle/caches 2>/dev/null
如果你透過設定檔或環境變數改過位置,直接問工具本身:
| 工具 | macOS 上的預設位置 | 詢問工具 | 清除方式 |
|---|---|---|---|
| npm | ~/.npm/_cacache | npm config get cache | npm cache clean --force |
| pnpm | ~/Library/pnpm/store | pnpm store path | pnpm store prune |
| Yarn 1 | ~/Library/Caches/Yarn | yarn cache dir | yarn cache clean |
| Yarn 2+ | ~/.yarn/berry/cache | yarn config get cacheFolder | yarn cache clean --all |
| Bun | ~/.bun/install/cache | bun pm cache | bun pm cache rm |
| Cargo | ~/.cargo/registry、~/.cargo/git | echo $CARGO_HOME | 刪除 registry/cache 和 registry/src |
| Gradle | ~/.gradle/caches | echo $GRADLE_USER_HOME | 停止 daemon,再刪除 caches |
怎麼清除 Mac 上的 npm 快取?
npm cache clean --force
npm 把下載的 tarball 存放在 ~/.npm/_cacache 底下的內容定址儲存區。從 npm 5 開始,快取會自行檢查完整性,所以 npm 不加 --force 就不肯清除。如果你只是懷疑快取損毀,npm cache verify 會回收不需要的資料並檢查其餘部分,而不必把所有東西都丟掉。
~/.npm 裡的兩個鄰居也可以安全移除:_npx 存放 npx 抓下來的套件,_logs 存放除錯日誌。清除快取不會動到任何專案或你的全域安裝。
怎麼清除 pnpm store?
pnpm store prune
pnpm 在全域 store 中為每個套件版本保留一份副本,再用硬連結把檔案連到各專案的 node_modules。prune 會移除已經沒有任何專案參照的套件。不要在安裝進行中執行它。執行 pnpm store path 可以看到確切的資料夾;store 目錄名稱包含版本號(例如 v10),會隨 pnpm 主要版本更新而改變,所以升級後可能會留下舊版本的資料夾。
因為硬連結的關係,對 store 和專案分別執行 du 會把同樣的位元組算兩次;只要專案還連結著那些檔案,刪除整個 store 也釋放不了多少空間。先 prune,再移除你不再開發的專案裡的 node_modules。
怎麼清除 Yarn 快取?
用 yarn --version 確認版本。Yarn 1(classic)使用 ~/Library/Caches/Yarn:
yarn cache clean
Yarn 2 以上(Berry)預設把全域快取放在 ~/.yarn/berry/cache,有些 repository 則改用專案內的 .yarn/cache。要同時清除全域和目前專案的快取:
yarn cache clean --all
如果某個 repository 為了 zero-installs 把 .yarn/cache 提交進 git,不要手動刪除它:它是 repo 的一部分。
怎麼清除 Bun 快取?
bun pm cache rm
除非 BUN_INSTALL_CACHE_DIR 另有指定,否則 Bun 把下載的套件存放在 ~/.bun/install/cache。bun pm cache 會印出路徑。不要動 ~/.bun/bin,因為 bun 執行檔本身就放在那裡。
怎麼清除 Cargo 快取?
Cargo 把下載的 crate 以壓縮檔形式存放在 ~/.cargo/registry/cache,解開的原始碼則在 ~/.cargo/registry/src。兩者都可以安全刪除,Cargo 會在下次建置時重新抓取:
rm -rf ~/.cargo/registry/cache ~/.cargo/registry/src
~/.cargo/git/checkouts 存放 git 相依套件,也可以刪。不要刪除 ~/.cargo/bin(用 cargo install 安裝的工具)或 ~/.cargo/credentials.toml。對 Rust 來說,更大的收穫通常是各專案的 target 資料夾,在專案裡執行 cargo clean 就能清掉。
怎麼清除 Gradle 快取?
先停止 Gradle daemon,因為它們會讓快取裡的檔案保持開啟:
./gradlew --stop
rm -rf ~/.gradle/caches
下次建置會重新下載相依套件並重建 transform,在 Android 專案上可能要花一段時間。~/.gradle/wrapper/dists 為你用過的每個 wrapper 版本保存一份完整的 Gradle 發行版;不再用來建置的舊版本可以刪除。請保留 ~/.gradle/gradle.properties,裡面常有簽署和 repository 的憑證。
怎麼找出佔用空間的 node_modules 資料夾?
在專案很多的 Mac 上,node_modules 資料夾通常比全域快取還大。把 ~/code 換成你放專案的位置,列出它們和大小:
find ~/code -name node_modules -type d -prune -exec du -sh {} + | sort -h
-prune 讓 find 不再深入每個 node_modules,所以巢狀的相依套件資料夾不會被分開列出,掃描也會很快。刪除你目前沒在積極開發的專案裡的那些:
rm -rf ~/code/old-project/node_modules
之後可以用專案裡的 lockfile,透過 npm ci、pnpm install --frozen-lockfile 或 yarn install --immutable 還原出一模一樣的樹狀結構。如果想要可以勾選的互動式清單,npx npkill 會掃描資料夾,並刪除你挑選的 node_modules。
哪些東西不該刪?
~/.npmrc、~/.yarnrc.yml等設定檔:裡面可能有 registry 驗證權杖。~/.nvm這類 Node 版本管理工具,以及全域安裝資料夾:這些是安裝好的工具,不是快取。- repository 裡的 lockfile 和已提交的
.yarn/cache資料夾。 - 安裝或建置進行中時,快取裡的任何東西。
清除快取會讓 Mac 變快嗎?
不會。它只會釋放磁碟空間,偶爾也能修好損毀的下載檔。在快取重新填滿之前,下次安裝或建置會比較慢,離線安裝也會無法使用。
從選單列檢視開發者快取
WTMemory 會掃描支援的開發者快取位置,包括 npm、pnpm、Yarn、Bun、Cargo 和 Gradle 快取,並顯示每一項的說明和估計大小。你可以先在 Finder 中顯示任何項目。檢視功能免費。
有了 Pro,你可以挑選個別快取、檢視刪除後的影響,再由 WTMemory 把它們移到垃圾桶。不會自動選取任何東西,也不會永久刪除任何東西;要不要清空垃圾桶由你決定。它只處理這些快取:原始碼不在範圍內,你的專案(包括其中的 node_modules)也不會被清理,那些請用上面的 find 指令。請先關閉執行中的套件管理工具和建置。WTMemory 支援 macOS 12 以上版本,Apple Silicon 與 Intel 皆可使用;Pro 一次付清 $9 USD,最多可用於三台 Mac,並提供七天試用。
常見問題
清除 npm 快取安全嗎?
安全。npm 快取是已下載套件的內容定址副本。清除它絕不會弄壞已安裝的專案;下次安裝時會重新下載套件,而在快取重新填滿之前,離線安裝會無法使用。
為什麼 npm cache clean 需要 --force?
從 npm 5 開始,快取會自我驗證並修復損毀,所以 npm 認為清除它是不必要的,要你用 --force 確認。npm cache verify 是比較溫和的選擇。
刪除 pnpm store 會弄壞我的專案嗎?
pnpm store prune 只會移除沒有任何專案參照的套件,所以很安全。刪除整個 store 不會損毀現有的 node_modules,因為檔案是硬連結,但下次 pnpm install 就得全部重新下載。
清除快取會讓 Mac 變快嗎?
不會。它只會釋放磁碟空間。在快取重新填滿之前,接下來的安裝和建置會比較慢。
快取和 node_modules,通常哪個比較大?
在專案很多的電腦上,專案裡的 node_modules 資料夾和 Rust 的 target 資料夾加起來,通常比全域快取還大。用 find 搭配 du 把它們列出來。