donfear/inup
GitHub: donfear/inup
inup是一款交互式依赖升级工具,支持多种包管理器,提供漏洞审计和变更日志查看功能。
Stars: 15 | Forks: 1
# inup — 交互式依赖升级工具
[](https://www.npmjs.com/package/inup)
[](https://www.npmjs.com/package/inup)
[](https://www.npmjs.com/package/inup)
[](https://github.com/donfear/inup/actions/workflows/ci.yml)
[](https://github.com/donfear/inup/blob/main/LICENSE)
交互式升级 npm、yarn、pnpm 和 bun 中的过时依赖。自动检测您的包管理器,在 monorepos 和工作空间中工作,无需任何配置。

## 快速开始
```
npx inup
```
或者使用您首选的包管理器全局安装:
```
npm install -g inup
pnpm add -g inup
yarn global add inup
bun add -g inup
```
在任何项目中运行 `inup`,它会扫描过时的包并允许您选择要升级的内容。
## 为什么选择 inup?
- **一次性升级所有依赖** — 开发、同伴和可选依赖自动加载。无需再使用 `--peer` 或 `--dev` 标志重新运行。
- **实时切换** — 无需重启即可实时过滤依赖类型(`d`、`p`、`o`)。
- **零配置** — 从您的锁定文件中自动检测 npm、yarn、pnpm 或 bun。
- **monorepo 适配** — 无缝发现和升级工作空间。
- **漏洞审计** — 在包列表中标记已知的安全漏洞,让您在升级前知道哪些是危险的。
- **变更日志查看器** — 在终端内阅读发布说明和变更日志,无需离开。
- **内置搜索** — 按 `/` 立即过滤包。
- **包详情** — 按 `i` 查看包信息、下载统计等信息。
- **主题** — 按 `t` 在颜色主题之间切换。
## 选项
```
inup [options]
-d, --dir Run in specific directory
-e, --exclude Skip directories (comma-separated regex)
-i, --ignore Ignore packages (comma-separated, glob supported)
--max-depth Maximum scan depth for package discovery (default: 10)
--package-manager Force package manager (npm, yarn, pnpm, bun)
--json Print a machine-readable JSON report and exit (read-only)
-c, --check Exit non-zero if updates exist, without writing (for CI)
--debug Write verbose debug logs
```
## CI & 脚本
`inup` 在 stdout 不是 TTY 或 `$CI` 设置时自动无头运行,因此它永远不会在管道中挂起等待交互式 UI。`--json` 和 `--check` 都是 **只读** 的 — 它们报告,永远不会编辑 `package.json` 或安装。
```
inup --check # exit 1 if anything is outdated → fails the build
inup --json | jq # structured drift report for dashboards/bots
inup | cat # plain line-based report when piped to a log
```
每个报告的包都携带其健康信号:`deprecated`(npm 弃用消息)、`enginesNode`(声明的 `engines.node`)和 `vulnerability`(当前安装版本上已知的警告,来自一个批量的 `npm audit`-style 请求)。每个警告都与升级目标进行交叉引用,因此您知道升级是否实际上解决了它:
- `vulnerability.advisories[].fixedByRange` / `fixedByLatest` — 目标范围是否逃避此警告的影响范围?
- `vulnerability.fixedByRange` / `fixedByLatest` — 目标是否清除 **所有** 警告?
摘要包括一个 `vulnerable` 计数,负载携带一个 `schemaVersion`,以便脚本和代理可以固定到一个已知的形状。
输出卫生:使用 `--json`,stdout 只携带 **JSON 文档**;所有进度和警告都发送到 stderr。退出代码:`0` 表示已更新,`1` 表示存在更新(`--check`),`2` 表示错误。
## 键盘快捷键
| 键 | 操作 |
|-----|--------|
| `↑ / k` | 向上移动 |
| `↓ / j` | 向下移动 |
| `g` | 跳转到第一个包 |
| `G` | 跳转到最后一个包 |
| `←` | 循环选择左(无 → 范围 → 最新) |
| `→` | 循环选择右(无 → 范围 → 最新) |
| `Space` | 切换当前包的开启/关闭 |
| `m` | 选择所有次要/补丁更新 |
| `l` | 选择所有最新更新(包括主要更新) |
| `u` | 取消选择所有包 |
| `Enter` | 确认选择并升级 |
| `/` | 通过名称搜索包 |
| `d` | 切换 devDependencies |
| `p` | 切换 peerDependencies |
| `o` | 切换 optionalDependencies |
| `s` | 运行漏洞审计 |
| `v` | 仅显示有漏洞的包 |
| `Esc` | 清除活动搜索过滤器 |
| `i` | 查看包详情和变更日志 |
| `t` | 更改颜色主题 |
| `?` | 显示此帮助 |
| `!` | 显示性能/调试面板 |
## 隐私
无跟踪,无遥测,无数据收集。包元数据直接从 npm 注册表获取。下载量来自 npm 下载 API。当需要精确版本清单时,inup 可能会从 jsDelivr 获取固定的 `package.json`。
## 许可证
[MIT](LICENSE)
标签:bun, MIT 许可, monorepo, npm, pnpm, yarn, 二进制发布, 代码管理, 依赖升级, 包管理, 变更日志, 后端开发, 安全可观测性, 工作区, 开源工具, 搜索, 数据管道, 日志审计, 暗色界面, 漏洞审计, 版本控制, 软件工程, 零配置