lazygit 风格的 NuGet TUI
Source: Dev.to

如果你曾经使用过 lazygit,你就会明白那种感觉。Git 不再是一件苦差事,而是几乎变得让人享受。你可以一次性看到所有信息,使用键盘进行导航,并在几秒钟内完成原本需要多条命令的操作。
我想把这种体验带到 NuGet 上。
dotnet list package --outdated 会输出一大堆文本。更新意味着对每个包都要运行单独的命令。检查漏洞又是另一条命令。搜索 NuGet.org 还是另一条命令。如果你在一个包含 10+ 项目的解决方案中工作,就会不停地在上下文之间切换。
于是我创建了 LazyNuGet。

功能概述
你只需把 LazyNuGet 指向一个文件夹,它会扫描所有 .csproj 文件。每个项目、每个包、每个版本——全部集中在一起。后台会悄悄地查询 NuGet.org,获取更新和漏洞信息。完成后,过时的包会以黄色高亮,存在漏洞的包会显示红色徽章。
随后你可以:
- 更新 单个包或一次性更新全部(
Ctrl+U) - 搜索 NuGet.org 而无需离开终端(
Ctrl+S)——浏览结果、阅读描述、选择版本、安装到一个或多个项目 - 查看依赖树(
Ctrl+D)以了解任意项目或包的依赖关系 - 迁移已弃用的包 到推荐的替代包,一键完成
- 浏览版本历史、发行说明、安全通告和下载统计,使用标签页(F1–F5)
- 跟踪操作历史,并可撤销或重试最近的更改(
Ctrl+H) - 使用私有源——支持带有存储凭据的已认证 NuGet 源
键盘和鼠标均可完整操作。

选中一个包后,会出现标签页视图——概览、依赖、版本历史、发行说明和安全通告。所有信息均实时从 NuGet.org 获取。

搜索模态框让你浏览 NuGet.org,阅读包描述,并可安装到一个或多个项目——无需离开终端。

入门指南
如果已安装 .NET 10
dotnet tool install --global LazyNuGet
lazynuget
或者直接获取自包含二进制文件(无需 .NET)
curl -fsSL https://raw.githubusercontent.com/nickprotop/lazynuget/main/install.sh | bash
然后运行:
lazynuget /path/to/your/solution
# 或者直接 cd 到该目录后运行 lazynuget
技术栈
使用 .NET 10、Spectre.Console 和 SharpConsoleUI 构建——后者是我自己编写的 TUI 布局库,负责响应式面板、窗口管理以及终端中的鼠标支持。
仍在早期阶段
如果你尝试了它,真诚期待听到哪些地方出错或缺少哪些功能。Issue 和 star 都非常感谢。
GitHub: