如何在 Windows 上卸载 Bun
Bun 是命令行运行时,卸载主要是移除程序本身,你的项目、项目里的 node_modules 和 bun.lock 都留在原处。跑过 bun install 的话,Bun 还会在用户目录里放一份全局包缓存,卸完可以顺手清掉。这份指南覆盖用 Oven-sh.Bun winget 包按用户安装的 Bun,winget 把它装成便携包。
先停掉在用 Bun 跑的东西
Bun 没有窗口也没有托盘图标,先停掉自己启动的开发服务器、脚本或 bun --watch,再在任务管理器(Ctrl+Shift+Esc)里确认没有 bun.exe 还在。
用 winget 移除
winget 装的 Bun 是便携包,用同样的方式移除:
winget uninstall --id Oven-sh.Bun
对便携包 winget 还提供 --purge,会删掉包目录里的全部文件,包括安装之后才写进去的,它碰不到你的项目,也碰不到下面那份缓存。
数据分别在哪里
| 位置 | 里面是什么 | 如何处理 |
|---|---|---|
%LOCALAPPDATA%\Microsoft\WinGet\Packages\Oven-sh.Bun_Microsoft.Winget.Source_8wekyb3d8bbwe |
winget 装的 Bun 程序 | winget 卸载包时会删 |
各个项目里的 node_modules 和 bun.lock |
那个项目的依赖和锁文件 | 属于项目本身,卸载 Bun 不会动它们 |
跑过 bun install 的话,按 Bun 的缓存文档,下载的包放在 %USERPROFILE%\.bun\install\cache,可以删,用到时 Bun 会重新下载,这次测试没跑过 bun install,所以这份缓存没出现。
检查结果
卸载完成后运行下面几条只读命令:
Get-Process bun -ErrorAction SilentlyContinue
winget list --id Oven-sh.Bun
Get-Command bun -ErrorAction SilentlyContinue
Test-Path "$env:LOCALAPPDATA\Microsoft\WinGet\Packages\Oven-sh.Bun_Microsoft.Winget.Source_8wekyb3d8bbwe"
Test-Path "$env:USERPROFILE\.bun"
Get-Process没有输出只表示未观察到匹配进程,被忽略的查询错误不能当作已经退出。winget list正常完成且没有匹配,才说明包记录已经没了,列出一行说明卸载没完成。Get-Command确认查询成功且没有匹配输出,说明这个终端里已经找不到bun,旧终端还带着旧的 PATH,判断前先开一个新终端。- 第一条
Test-Path返回False,说明包目录已经没了,返回True说明那里还有文件。 Test-Path "$env:USERPROFILE\.bun"返回True,说明全局缓存或者另一份 Bun 还在,用不上的话自己删掉。
Mole 会列出什么
对按用户安装的 winget 版 Bun,包目录跟着应用这一行走,Mole 通过 winget 把它移除。这次测试里没有列出别的行,因为 Bun 在包目录之外什么都没写。磁盘上的项目从来不在这张表里。
这次检查覆盖了什么
测试于 2026 年 9 月 28 日,Bun 1.4.2 通过 winget 在提权环境里装成按用户的便携包,卸载走的是 winget,它把包目录整个删掉了。没有测试:在真实项目里跑 bun install、全局缓存,以及用官方安装脚本装的 Bun。
