如何在 Windows 上卸载 Deno
Deno 在项目之外不保存你的东西,脚本、deno.json 和锁文件都在你自己建的项目文件夹里,卸载 Deno 不会动它们。它自己留着的是一份远程模块和 npm 包的下载缓存,下次运行项目时会自己再下回来。这份指南覆盖用 DenoLand.Deno winget 包按用户安装的 Deno,这个包把单个 deno.exe 放在 winget 自己的包目录里。
先停掉 Deno 在跑的东西
在终端里停掉还在跑的 deno run、deno task 或 deno serve,关掉正在用 Deno 语言服务的编辑器,卸载前在任务管理器(Ctrl+Shift+Esc)里确认没有 deno.exe 还在。
用 winget 移除 Deno
winget 版 Deno 是便携包,由 winget 解压并记录,所以也用 winget 移除:
winget uninstall --id DenoLand.Deno
也可以在「设置 › 应用 › 已安装的应用」里找到 Deno 选择卸载,走的是同一个 winget 移除。
数据分别在哪里
| 位置 | 里面是什么 | 如何处理 |
|---|---|---|
%LOCALAPPDATA%\Microsoft\WinGet\Packages\DenoLand.Deno_Microsoft.Winget.Source_8wekyb3d8bbwe |
deno.exe 本体 |
winget 会删 |
%LOCALAPPDATA%\deno |
缓存的远程模块、npm 包和编译结果 | 可以删,项目需要时 Deno 会重新下载 |
检查结果
卸载完成后运行下面几条只读命令:
Get-Process deno -ErrorAction SilentlyContinue
winget list --id DenoLand.Deno
Get-Command deno -ErrorAction SilentlyContinue
Test-Path "$env:LOCALAPPDATA\deno"
Get-Process没有输出只表示未观察到匹配进程,被忽略的查询错误不能当作已经退出。列出进程,说明还有脚本或语言服务开着。winget list正常完成且没有匹配,才说明包记录已经没了,列出一行说明卸载没完成。Get-Command确认查询成功且没有匹配输出,说明 PATH 里已经找不到deno。有结果说明别处还装着一份,比如用其他安装方式装的,看它给出的路径就知道在哪。Test-Path返回True,说明模块缓存还在,只要你没有自己删掉,这就是正常的,返回False说明已经没了。
用 winget 安装时
对这种便携包,winget 文档里有 --purge,会把包目录里的东西连同安装后才生成的文件一起删掉:
winget uninstall --id DenoLand.Deno --purge
它不会动 %LOCALAPPDATA%\deno。
Mole 会列出什么
对按用户安装的 winget 版 Deno:
- Mole 通过 winget 移除 Deno,
deno.exe和它的包目录一起删掉。 - 模块缓存
%LOCALAPPDATA%\deno会列出,但默认不勾选。 - 你的项目文件夹不在这张表里。
这次检查覆盖了什么
测试于 2026 年 9 月 28 日,Deno 2.9.7,通过 winget 按用户范围安装,也通过 winget 移除。列出的缓存目录这次勾选并删除了。没有测试:被真实项目填满的缓存,以及用 Deno 官方安装脚本装的那一份。
