donfear/inup

GitHub: donfear/inup

inup是一款交互式依赖升级工具,支持多种包管理器,提供漏洞审计和变更日志查看功能。

Stars: 15 | Forks: 1

# inup — 交互式依赖升级工具 [![npm 版本](https://img.shields.io/npm/v/inup?logo=npm&logoColor=%23CB3837&style=for-the-badge&color=crimson)](https://www.npmjs.com/package/inup) [![下载量](https://img.shields.io/npm/dm/inup?style=for-the-badge&color=646CFF&logoColor=white)](https://www.npmjs.com/package/inup) [![总下载量](https://img.shields.io/npm/dt/inup?style=for-the-badge&color=informational)](https://www.npmjs.com/package/inup) [![CI](https://img.shields.io/github/actions/workflow/status/donfear/inup/ci.yml?branch=main&style=for-the-badge&label=CI)](https://github.com/donfear/inup/actions/workflows/ci.yml) [![许可证: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://github.com/donfear/inup/blob/main/LICENSE) 交互式升级 npm、yarn、pnpm 和 bun 中的过时依赖。自动检测您的包管理器,在 monorepos 和工作空间中工作,无需任何配置。 ![交互式升级演示](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/f55e2c99af034129.gif) ## 快速开始 ``` 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, 二进制发布, 代码管理, 依赖升级, 包管理, 变更日志, 后端开发, 安全可观测性, 工作区, 开源工具, 搜索, 数据管道, 日志审计, 暗色界面, 漏洞审计, 版本控制, 软件工程, 零配置